【问题标题】:Further matching after pd.merge using another keypd.merge 之后使用另一个键进一步匹配
【发布时间】:2021-03-05 10:11:40
【问题描述】:

我已经合并了 2 个 DataFrame (df1, df2) 并且有一些使用 Key1 的不匹配项 (NaN)。对于其中一些,使用key2 可以进一步匹配(但仅限于NaN)。

匹配进一步匹配 NaN 的最佳方法是什么?

import pandas as pd

data1 = {'key1': ['abc','efg', 'xyz', 'sdf'],
         'key2' : ['123','345','567','900'],
         'emotion' : ['happy','busy','funny','excited']
        }

data2 = {'key1': ['abc','efg', 'aaa', 'sdf'],
         'key2' : ['123','345','567','600'],
         'why' : ['holiday','school','monkey','happy']
        }

df1= pd.DataFrame(data1)
df2= pd.DataFrame(data2)

df1.merge(df2, how = 'left',on = 'key1')

【问题讨论】:

    标签: pandas dataframe merge nan


    【解决方案1】:

    这是一种并排的方法,然后fillna

    s1 = df1.reset_index().merge(df2,on='key1',how='left').set_index('index')
    s2 = df1.reset_index().merge(df2,on='key2',how='left').set_index('index')
    out = s1.fillna(s2)
    out
    Out[30]: 
          key1 key2_x  emotion key2_y      why
    index                                     
    0      abc    123    happy    123  holiday
    1      efg    345     busy    345   school
    2      xyz    567    funny    NaN   monkey
    3      sdf    900  excited    600    happy
    

    【讨论】:

      猜你喜欢
      • 2017-12-16
      • 1970-01-01
      • 1970-01-01
      • 2014-05-21
      • 2021-05-13
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多