我目前正在学习 Python 来进行数据操作。我编写了一个基本脚本来获取两个 csv 文件并根据时间戳合并它们,并生成另一个 csv 文件,该文件是这些合并数据集的结果。
但是,我正在努力创建一种方法来合并位于基于时间戳的目录中的多个 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 文件的建议或指示将不胜感激。
谢谢!
最佳答案
您可以使用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')
请注意,运行脚本两次也会将输出包含为输入 - 建议将它们写在其他地方。
关于python - 根据时间戳合并目录中的 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53825240/