合并多个熊猫框架

时间:2020-10-10 22:45:33

标签: python pandas

我有一堆CSV文件,其中包含特定时间的数据,并且时间编码为文件名:

time1.csv
Label val1 val2
a      5    6
b.     6    4

time2.csv
Label val1 val2
a      5    6
c      6    4

...

我可以将每个文件读入Pandas数据框中。然后我要: 在每个数据帧中添加“时间”列,然后将所有数据帧合并为一个数据帧。

有没有办法做到这一点?

2 个答案:

答案 0 :(得分:1)

鉴于文件名列表,您可以分配一个时间栏以使其等于文件名(不包括最后四个字符,即.csv)并连接结果。

df = pd.concat([pd.read_csv(filename).assign(time=filename[:-4])
                for filename in filenames])

答案 1 :(得分:0)

您可以创建一个dfs时间列表,然后对其进行迭代并将其附加到finaldf

finaldf =pandas.DataFrame()
for df in times:
    finaldf = finaldf.append(df.assign(time= timename),ignore_index=True)

print(finaldf)

要更自动地执行此操作,您可以将filesname放入数组中,并以如下方式读取它:

finaldf =pandas.DataFrame()
times = ['time1','time2']
for csv in times:
    df = pd.read_csv('{}.csv'.format(csv))
    finaldf = finaldf.append(df.assign(time= csv),ignore_index=True)
    
print(finaldf)

结果将是:

Label val1 val2   time
a      5    6     time1
b      6    4     time1
a      5    6     time2
c      6    4     time2