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

标签 python python-3.x pandas

我目前正在学习 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/

相关文章:

python - 在 Visual Studio Code 容器中安装 Python 库

python - BSSID(AP MAC 地址)无效

mysql - Cx-卡住 : Showwarning AttributeError: 'NoneType' object has no attribute 'write'

python - 变量检查的干净方式 + 在 while 循环中继续

python - 如何从python中的total_amount、qty和rate列中删除-ve符号

javascript - jquery 函数无法向 django 服务器发送 ajax 请求

python - 使用 Python 拆分 Twitter RSS 字符串

python - Pandas:使用 Append 添加新列并使另一个全为 NaN

python-3.x - 如何从 Python 生成的动态循环中删除空值?

python - 从日期时间中提取时间以便在 Pandas 中进行比较