python - Pandas 检查多列的条件

标签 python pandas

我有一个数据框,我正在检查它是否在所有列中都是Y,否则返回N,如果行中的所有列都为Null则返回Null相反。

di = {'col1': [None, 'Y', 'N'], 'col2': [None, 'Y', 'N'], 'col3': [None, 'N', 'N']}
df = pd.Dataframe(di)
df['test'] = pd.np.where(df[['col1', 'col2', 'col3']].eq('Y').any(1, skipna=True), 'Y', 'N')

此返回:

 col1  col2  col3 test
0  None None  None    N
1     Y     Y     N    Y
2     N     N     N    N

我希望它能回来

  col1  col2  col3 test
0  None  None  None    None
1     Y     Y     N    Y
2     N     N     N    N

最佳答案

你可以在里面包装另一个numpy.where来检查null条件:

df['test'] = pd.np.where(df[['col1', 'col2', 'col3']].eq('Y').any(1, skipna=True), 'Y', 
             pd.np.where(df[['col1', 'col2', 'col3']].isnull().all(1), None, 'N'))

df
#   col1    col2    col3    test
#0  None    None    None    None
#1     Y       Y       N       Y
#2     N       N       N       N

关于python - Pandas 检查多列的条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45155839/

相关文章:

python - 启用 mypy `strict_Optional 有什么优点?

没有缩进的 Python def

python - 删除列表中包含值的行

python - 取决于其先前值(行)的 Pandas 列?

python - 如何在 VSCode 的调试器模式下绘图

python - 查找数据异常值

python - 如何在单个 jupyter 单元格中显示多个 pandas describe() 输出?

python - 如何一次删除多列

python - Pandas :如何用平均值填充缺失数据?

python - Pandas 中的排序函数,返回困惑的数据