首页 > 解决方案 > .CSV 文件字典的数据清理

问题描述

我试图找出一个很好的实现来从一组 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'])

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

标签: pythondatabasecsvglobdata-cleaning

解决方案


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

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

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

如果必须使用 DataFrames 完成此操作,我深表歉意,我在这里相当新。


推荐阅读