【问题标题】:Data cleaning on dictionary of .CSV files.CSV 文件字典的数据清理
【发布时间】:2019-05-28 18:49:40
【问题描述】:

我正在尝试找出一个很好的实现来从一组 CSV 文件中删除选定的列。我有一个 CSV 文件目录,我想从中聚合时间序列数据,但只需要值和时间戳。我想只删除其他列,我也很好奇在将文件放在一起后如何执行此类任务。到目前为止,我所拥有的是这样的:

files = glob.glob("../dir/subdir/*.csv")
data = {os.path.basename(fname):pd.read_csv(fname) for fname in files}
for df in data:
     df.drop(columns = ['A', 'D'])

这不起作用有几个原因,但我怎样才能实现我的目标?

【问题讨论】:

  • 使用inplace=True
  • 使用 inplace=True 或 df = df.drop(columns = ['A', 'D']),之后,您还应该使用 to_csv() 将数据写回 csv 文件
  • 你没有遍历字典中的值。
  • 你真正想做什么?您需要其他地方的数据吗?您只想删除列吗?您提到要聚合所有数据框有什么原因吗?

标签: python database csv glob data-cleaning


【解决方案1】:

假设您想保留“B”和“C”列。而且您只是想按照最后一句话清理数据,这意味着您只想完成工作,因此不需要特别需要 Python,那么这个命令行单行器将为您创建一个新的 .csv,只需第二个第三列:

awk 'FNR == 1 {next} BEGIN {FS=","} {print $2","$3}' *.csv > new.csv

我假设您最终希望将一个完全连接的文件读入 DataFrame,因此它设置为从第二行开始读取每个 .csv 文件,因此您必须在生成后替换标题。

如果必须使用 DataFrames 来完成,我深表歉意,我是新手。

【讨论】:

    猜你喜欢
    • 2022-01-21
    • 1970-01-01
    • 1970-01-01
    • 2019-09-03
    • 2018-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多