Pandas通过多个密钥加入数据帧

时间:2016-07-23 16:11:26

标签: python pandas dataframe

我想要加入3个不同的数据帧,使用标签和窗口作为键。

DataFrame1

Window  Label  FeatA
123      1        h
123      2        f

DataFrame2

Window  Label  FeatB
123      1      d 
123      2      s

DataFrame3

Window  Label  FeatC
123     1       d
123     2       c

结果

Window  Label  FeatA  FeatB  FeatC
123      1       h      d       d
123      2       f      s       c

我知道如何使用pandas.concat加入数据框,但不知道如何指定密钥。任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:3)

根据您的情况,您需要使用merge函数来连接表,因为您有多个要加入的数据框,您可以将它们放入列表中,然后使用reduce来自{{ 1}}逐个合并它们:

functools

答案 1 :(得分:3)

使用pd.concat

的纯大熊猫回答
pd.concat([df.set_index(['Window', 'Label']) for df in [df1_, df2_, df3_]],
          axis=1).reset_index()

enter image description here

答案 2 :(得分:1)

您可以使用combine_first

In[44]:df.combine_first(df1).combine_first(df2)[['Window','Label','FeatA','FeatB','FeatC']]
Out[44]: 
   Window  Label FeatA FeatB FeatC
0     123      1     h     d     d
1     123      2     f     s     c

或者您可以使用merge

In[30]:df.merge(df1,on=['Window','Label']).merge(df2,on=['Window','Label'])
Out[30]: 
   Window  Label FeatA FeatB FeatC
0     123      1     h     d     d
1     123      2     f     s     c