合并数据框并创建NaN值,而无需重新排序

时间:2019-07-23 16:00:34

标签: python pandas

我想在'word'上合并两个数据框。他们看起来像这样:

df1

bucket = bucket.sort { item -> item.foo }.take(10).filter { item -> item.foo > x }

df2

   word    other_data
0  hello      1
1  how        2
2  are        3
3  you        4

我想要的结果是这样:

   word    
0  hello      
1  ,
2  how        
3  are        
4  you        
5  ?  

与此最接近的是我能得到的结果,但是它会产生不按原始顺序的df。

   word    other_data
0  hello      1
1  ,          NaN
2  how        2
3  are        3
4  you        4
5  ?          NaN

3 个答案:

答案 0 :(得分:0)

您需要的是联接,这是在熊猫购买上完成的,将另一个数据帧的索引设置为所需的键并指定联接操作的键,这很简单:

df2.join(df1.set_index('word'), on='word')

答案 1 :(得分:0)

我认为您想尝试一下。

pd.merge(df1, df2, how='outer', on='word')

外部表示它将创建一系列密钥作为df1和df2中的密钥的并集,而right将仅使用df2中的密钥。

on专门指定要连接的列。

来源:Autograd: Automatic Differentiation

答案 2 :(得分:0)

一种简单的方法是reindex

df=df1.set_index('word').reindex(df2.word).reset_index()
Out[20]: 
    word  other_data
0  hello         1.0
1      ,         NaN
2    how         2.0
3    are         3.0
4    you         4.0
5      ?         NaN