python / Pandas合并两个数据帧并返回包含NaN

时间:2018-06-17 00:38:19

标签: python pandas dataframe merge

是否可以使用merge to df,df1和df2,仅返回df2中的Nan行?一个例子:

import pandas as pd
import numpy as np

data = {'X1': ['A', 'B', 'C', 'D', 'E'], 
        'X2': ['meow', 'bark', 'moo', 'squeak', 'cheep']}

data2 = {'X1': ['A', 'B', 'F', 'D', 'E'], 
         'X3': ['cat', 'dog', 'frog', 'mouse', 'chick']}

#df = pd.DataFrame(data, columns = ['name', 'age', 'preTestScore', 
'postTestScore'])
df = pd.DataFrame(data)
df2 = pd.DataFrame(data2)

pd.merge(df, df2, how ='left', on = 'X1')

返回

X1   X2     X3
A   meow    cat
B   bark    dog
C   moo NaN
D   squeak  mouse
E   cheep   chick

我想要一个看起来像的结果:

X1   X2     X3
C   moo NaN

我已经尝试了我能想到的每种合并组合,但我无法理解。 我知道我可以通过对合并的df进行大量操作来实现结果,但我希望有一个简单有效的答案

1 个答案:

答案 0 :(得分:1)

只需将isnullany与您的结果一起使用即可过滤

s=pd.merge(df, df2, how ='left', on = 'X1')
s[s.isnull().any(1)]
Out[185]: 
  X1   X2   X3
2  C  moo  NaN