python - 在 Pandas 中组合单独的每日 CSV

标签 python pandas dataframe date merge

我有一堆 CSV 文件,每个文件都以收集日期命名,即。 :

2020-03-21.csv
2020-03-22.csv
2020-03-23.csv
etc....

我想创建一个包含来自所有 CSV 的数据的单个 pandas DataFrame,并使用一个新的日期列列出数据的来源日期。作为玩具示例:

当前的单个 CSV(例如 2020-03-19.csv):

Country           X         Y

Australia        10        14
China            24        16
Canada           18        35

期望的结果(组合 DataFrame):

Country           X         Y         Date

Australia        10        14       2020-03-19
China            24        16       2020-03-19
Canada           18        35       2020-03-19
Australia        14        16       2020-03-20
China            23        17       2020-03-20
Canada           20        38       2020-03-20
Australia        25        19       2020-03-21
etc...

在 Pandas 中实现这一目标的最佳方法是什么?我尝试了几种使用 pd.mergepd.concat 的方法,但没有成功。

最佳答案

首先,您需要列出文件夹中的所有路径 csv 文件:

import glob
csvfiles = []
csvfiles = glob.glob("/path/to/folder/*.csv")
print(csvfiles)

然后你将遍历所有这些文件并将它们连接起来:

list_df = []
for csvfile in csvfiles:
    #read csv file to df
    df = pd.read_csv(csvfile)
    #get the filename ex: 2020-03-19
    csv_name = csvfile.split('/')[-1].split('.')[0]
    #create a new column with all values are filename ex: 2020-03-19
    df['Date'] = csv_name
    #add df to a list
    list_df.append(df)
#concat all the df in the list
final_df = pd.concat(list_df)

关于python - 在 Pandas 中组合单独的每日 CSV,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60923806/

相关文章:

python - 如何使用 Pandas 在 csv 中查找缺失的行?

Python Pandas : Filter in dataframe matching a set of multiple items/conditions from another dataframe

python - 连接来自 pickle 的 pandas 数据帧与来自内存字典的 pandas 数据帧 - 为什么内存中会失败?

python - 过滤具有多个值的字段 pandas python

python - 均值按两列分组,窗口为 3 个月,NaN 小于 3 个月

python - 从 python 数据框中获取唯一日期

python - 将时间序列转入面板...python

python - 根据另一个数据帧的组范围解释数据帧列的范围

python - 从子类中的父类访问属性

python - numpy数组索引中的隐式转置