我本质上是想这样做
mrgd.query('security == security and comnam == comnam')
但这总是错误的。
或者我在想也许我可以做
mrgd.eval('security == security') & mrgd.eval(comnam == comnam')
但这不起作用。
mrgd['security'].notnull() == mrgd['comnam'].notnull()
我想我可以做到
mrgd[['security','comnam']].notnull()
,然后对生成的两列求和以得到一个整数(2表示成功),但是传统的实现方式是什么?我发现了与此类似但又不太一样的问题。
答案 0 :(得分:2)
我认为您可以这样做:
import pandas as pd
df = pd.DataFrame(
[[None, None],
[3, None],
[None, 2],
[2, 3]],
columns=['security', 'comnam',],
)
df[df['security'].notnull() & df['comnam'].notnull()]
结果是:
security comnam
3 2.0 3.0
我尝试过:
df.query('security == security and comnam == comnam')
结果是一样的。
答案 1 :(得分:1)
推荐的方法是使用isna
,notna
和isnull
,notnull
。在检查两列时,只需在all
上附加其他axis=1
检查两列均为非NaN
mrgd[['security','comnam']].notna().all(1)
检查两列均为非NaN
mrgd[['security','comnam']].notna().any(1)