在Python中使用Pandas基于日期加入多个文件

时间:2016-03-23 19:24:03

标签: python date csv join pandas

我有csv文件,我需要根据日期连接在一起,但每个文件中的日期不一样(即一些文件从1/1/1991和1998年的其他文件开始)。我有一个基本的代码开始(见下文),但我不知道从哪里开始。任何提示都表示赞赏。请在下面找到我尝试加入的不同csv的示例。

import os, pandas as pd, glob
directory = r'C:\data\Monthly_Data'
files = os.listdir(directory)
print(files)
all_data =pd.DataFrame()
for f in glob.glob(directory):
    df=pd.read_csv(f)
    all_data=all_data.append(df,ignore_index=True)
all_data.describe()

档案1

DateTime    F1_cfs  F2_cfs  F3_cfs  F4_cfs  F5_cfs  F6_cfs  F7_cfs
3/31/1991   0.860702028 1.167239264 0   0   0   0   0
4/30/1991   2.116930556 2.463493056 3.316688418             
5/31/1991   4.056572581 4.544307796 5.562668011             
6/30/1991   1.587513889 2.348215278 2.611659722             
7/31/1991   0.55328629  1.089637097 1.132043011             
8/31/1991   0.29702957  0.54186828  0.585073925             2.624375
9/30/1991   0.237083333 0.323902778 0.362583333 0.925563094 1.157786606 2.68722973  2.104090278

文件2

DateTime    F1_mg-P_L   F2_mg-P_L   F3_mg-P_L   F4_mg-P_L   F5_mg-P_L   F6_mg-P_L   F7_mg-P_L
6/1/1992    0.05    0.05    0.06    0.04    0.03    0.18    0.08
7/1/1992    0.03    0.05    0.04    0.03    0.04    0.05    0.09
8/1/1992    0.02    0.03    0.02    0.02    0.02    0.02    0.02

档案3

DateTime    F1_TSS_mgL  F1_TVS_mgL  F2_TSS_mgL  F2_TVS_mgL  F3_TSS_mgL  F3_TVS_mgL  F4_TSS_mgL  F4_TVS_mgL  F5_TSS_mgL  F5_TVS_mgL  F6_TSS_mgL  F6_TVS_mgL  F7_TSS_mgL  F7_TVS_mgL
4/30/1991   10  7.285714286 8.5 6.083333333 3.7 3.1                             
5/31/1991   5.042553191 3.723404255 6.8 6.3 3.769230769 2.980769231                             
6/30/1991           5   5   1   1                               
7/31/1991                                                       
8/31/1991                                                       
9/30/1991   5.75    3.75    6.75    4.75    9.666666667 6.333333333 8.666666667 5   12  7.666666667 8   5.5 9   6.75
10/31/1991  14.33333333 9   14  10.66666667 16.25   11  12.75   9.25    10.25   7.25    29.33333333 18.33333333 13.66666667 9
11/30/1991  2.2 1.933333333 2   1.88    0   0   4.208333333 3.708333333 10.15151515 7.909090909 9.5 6.785714286 4.612903226 3.580645161

1 个答案:

答案 0 :(得分:1)

您没有正确读取csv文件。

1)您需要注释掉以下行,因为您以后从未在代码中使用它。

   files = os.listdir(directory)
   print(files)

2)glob.glob(directory)没有返回任何匹配文件。 glob.glob()将 pattern 作为参数,例如:'C:\data\Monthly_Data\File*.csv',遗憾的是,您将目录作为模式放置,并且找不到文件

for f in glob.glob(directory):

我修改了以上2部分和print all_data,文件内容显示在我的控制台上