大熊猫:如何在一个列上合并具有相同列名的多个数据框?

时间:2019-12-12 08:27:44

标签: python pandas

我有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都相同。

如何在熊猫中做到这一点?

1 个答案:

答案 0 :(得分:2)

一个想法是将concat用于DataFrame的列表-仅需要id为每个DaatFrame创建索引。同样为避免重复的列名添加了keys参数,但它在输出中创建了MultiIndex。因此,将mapformat添加在一起以使其变平:

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