根据时间戳合并目录中的csv文件

时间:2018-12-18 01:36:25

标签: python python-3.x pandas

我目前正在学习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文件的建议或指导,将不胜感激。

谢谢!

1 个答案:

答案 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')

请注意,两次运行脚本还将把输出也作为输入-建议将它们写入其他位置。