如何创建可复用函数,基于指定列中的值删除数据行?
如何创建基于指定列值删除行的可复用Pandas函数
你现有可正常运行的代码(注意原代码里list1应为listToRemove,修正后如下):
df = raw_data listToRemove = ["red", "blue"] raw_data = raw_data[raw_data.colours.isin(listToRemove) == False]
你编写的函数存在几个语法和逻辑错误,导致无法运行:
- 函数参数不能用
[list]这种写法,属于非法参数定义 listToRemove = [list]会把传入的列表再嵌套一层,变成二维列表,导致isin判断失效- 用
df.column无法通过变量指定列名,必须使用df[column]的方式来通过字符串变量获取列
正确的可复用函数写法如下:
def remove_rows(df, column_name, remove_list): # 过滤掉指定列中包含目标列表元素的行 filtered_df = df[~df[column_name].isin(remove_list)] return filtered_df
用法示例
针对你的原始数据调用该函数:
# 假设raw_data是你的目标DataFrame cleaned_data = remove_rows(raw_data, "colours", ["red", "blue"])
补充说明
- 用
~代替== False,是Pandas中更简洁的布尔取反写法 - 函数参数名尽量清晰易懂,避免歧义
- 函数内部不直接修改传入的原DataFrame,返回新的过滤后结果,符合数据处理的最佳实践
内容的提问来源于stack exchange,提问作者Ben Watson
相关产品推荐
相关产品推荐

