繁体   English   中英

python / Pandas合并两个数据框并返回包含NaN的行

[英]python/Pandas merge two data frames and return on the rows containing NaN

是否可以使用对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进行很多操作来实现结果,但是我希望有一个简单有效的答案

只需使用isnullany与你的结果对其进行过滤

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM