选择两个特定列均非空的行

fin*_*ian 5 python pandas

我本质上想这样做

mrgd.query('security == security and comnam == comnam')
Run Code Online (Sandbox Code Playgroud)

但这总是错误的。

或者我想也许我可以做

mrgd.eval('security == security') & mrgd.eval(comnam == comnam')
Run Code Online (Sandbox Code Playgroud)

但这行不通。

mrgd['security'].notnull() == mrgd['comnam'].notnull()
Run Code Online (Sandbox Code Playgroud)

我想我可以做到这一点

mrgd[['security','comnam']].notnull()
Run Code Online (Sandbox Code Playgroud)

然后将生成的两列相加以获得一个整数(2 表示成功),但是执行此操作的常规方法是什么?我发现了与此类似的问题,但不完全相同。

And*_*nda 5

我认为你可以这样做:

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()]
Run Code Online (Sandbox Code Playgroud)

结果是:

  security  comnam
3   2.0 3.0
Run Code Online (Sandbox Code Playgroud)

我努力了:

df.query('security == security and comnam == comnam')
Run Code Online (Sandbox Code Playgroud)

结果是一样的。