我有N个数据帧:
df1:
time data
1.0 a1
2.0 b1
3.0 c1
df2:
time data
1.0 a2
2.0 b2
3.0 c2
df3:
time data
1.0 a3
2.0 b3
3.0 c3
我想将它们全部合并到id上,从而得到
time data1 data2 data3
1.0 a1 a2 a3
2.0 b1 b2 b3
3.0 c1 c2 c3
我可以确保所有数据框中的所有ID都相同。
如何在熊猫中做到这一点?
答案 0 :(得分:2)
一个想法是将concat
用于DataFrame
的列表-仅需要id
为每个DaatFrame
创建索引。同样为避免重复的列名添加了keys
参数,但它在输出中创建了MultiIndex
。因此,将map
与format
添加在一起以使其变平:
dfs = [df1, df2, df3]
dfs = [x.set_index('id') for x in dfs]
df = pd.concat(dfs, axis=1, keys=range(1, len(dfs) + 1))
df.columns = df.columns.map('{0[1]}{0[0]}'.format)
df = df.reset_index()
print (df)
id data1 data2 data3
0 1 a1 a2 a3
1 2 b1 b2 b3
2 3 c1 c2 c3