python-3.x 基于另一个列筛选器对列进行空/重复检查

wecizke3  于 2023-01-03  发布在  Python
关注(0)|答案(1)|浏览(131)

我正在用下面的要求来研究Pandas

我需要检查以下条件,如果条件为A,则m不应为空,如果条件为B,则n不应为空
我写了下面的代码

df_filter = df.loc[df['criteria']]=='A',[m]] #for A condition check

df_filter = df.query("criteria == A")[m]

但两者都没有给出正确的结果
我也试过

df_filter = df.loc[(df["criteria"] == "A") & ~ (df["m"].isnull()]

但这给出了没有空的列。
如果从条件中选择A,我需要检查m列中是否存在空值。
任何帮助都将不胜感激

icnyk63a

icnyk63a1#

使用Series.notna测试非缺失值,如果需要链接另一个条件,则使用|作为按位OR

df_filter = df[(df["criteria"].eq("A") & df["m"].notna()) | 
                (df["criteria"].eq("B") & df["n"].notna())]

如果没有空字符串值:

df_filter = df[(df["criteria"].eq("A") & df["m"].ne('')) | 
                (df["criteria"].eq("B") & df["n"].ne(''))]

相关问题