首页 > 解决方案 > 当相关列中的值不为空时,如何编写一个函数来查找列中的值为空的所有行

问题描述

def check_correlated_column_values(df,column,dependent_column_list):
        result = df.loc[(df[column].isnull()) & (pd.notnull(df[dependent_column_list[0]])) & (pd.notnull(df[dependent_column_list[1]])) & (pd.notnull(df[dependent_column_list[2]]))]
        return (result)

dependent_column_list是动态的,可以针对特定列进行更改。

示例:一个数据框有 3 列,ManagerName、ManagerPhone 和 ManagerEmail,我想编写一个通用函数来查找 ManagerName 为空但 ManagerPhone 和 ManagerEmail 列值不为空的所有行。

在上述函数上下文中,column='ManagerName', dependent_column_list=['ManagerPhone', ManagerEmail']. 仅当依赖列表中有 3 列时,上述函数才有效,希望使其通用,以便它可以处理该列表中的任意数量的动态更改。

谢谢!!!

标签: pythonpandas

解决方案


正如 Bruno Mello 回答的那样,您可以使用任何循环系统。

但是您可以使用函数any()and来做到这一点all()

All()- 如果可迭代对象的所有元素都为真(或可迭代对象为空),则返回 True。Python 文档

pd.notnull(df[dependent_column_list]) 

这将创建一个仅包含布尔数据的数据框。因此,您不必声明列。它使代码通用。

但要注意axis=1括号内的内容。这将合成行,而不是列(默认)。

def check_correlated_column_values(df,column,dependent_column_list):
        result = df.loc[(df[column].isnull()) & (pd.notnull(df[dependent_column_list]).all(axis=1))]
        return (result)

推荐阅读