我有一堆CSV文件,其中包含特定时间的数据,并且时间编码为文件名:
time1.csv
Label val1 val2
a 5 6
b. 6 4
time2.csv
Label val1 val2
a 5 6
c 6 4
...
我可以将每个文件读入Pandas数据框中。然后我要: 在每个数据帧中添加“时间”列,然后将所有数据帧合并为一个数据帧。
有没有办法做到这一点?
答案 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