我目前正在学习Python进行数据处理。我已经编写了一个基本脚本来获取两个csv文件,并根据时间戳将它们合并,并生成另一个csv文件,这是这些合并的数据集的结果。
但是,我努力创建一种方法来合并基于TimeStamps的目录中的多个csv文件。这是我目前所拥有的:
import pandas as pd
from datetime import datetime
dataset1 = pd.read_csv('ds1.csv', index_col=0, parse_dates=[0])
dataset2 = pd.read_csv('ds2.csv', index_col=0, parse_dates=[0])
combinecsv = pd.merge(dataset1,dataset2, on='DateTime',how = 'outer')
combinecsv.to_csv(r"C:\Users\General\Documents\Data\combined.csv")
validcsv = pd.merge(dataset1,dataset2, on='DateTime',how = 'inner')
validcsv.to_csv(r"C:\Users\General\Documents\Data\valid.csv")
对于能够学习如何基于时间戳合并多个(10个以上)csv文件的建议或指导,将不胜感激。
谢谢!
答案 0 :(得分:1)
您可以使用pathlib的Path.glob()
列出目录中的所有.csv文件:
for csv in Path(r'C:\Temp').glob('*.csv'):
# do something with csv
pass
然后可以将每个下一个.csv的内容和列添加到现有集合中:
from pathlib import Path
import pandas as pd
def add_dataset(old, new, **kwargs):
if old is None:
return new
else:
return pd.merge(old, new, **kwargs)
combined_csv = None
valid_csv = None
for csv in Path(r'C:\Temp').glob('*.csv'):
dataset = pd.read_csv(csv, index_col=0, parse_dates=[0])
combined_csv = add_dataset(combined_csv, dataset, on='DateTime', how='outer')
valid_csv = add_dataset(valid_csv, dataset, on='DateTime', how='inner')
combined_csv.to_csv(r'C:\Temp\combined.csv')
valid_csv.to_csv(r'C:\Temp\valid.csv')
请注意,两次运行脚本还将把输出也作为输入-建议将它们写入其他位置。