如何删除pandas DataFrame指定字典列含None值的行
删除
full_time_result列全None字典对应行的实现方法 目标列full_time_result存储的是Python字典类型,不需要做字符串模糊匹配,直接逐行校验字典内的值就能完成过滤,具体有两种常用实现方式:
通用过滤(适配所有字典全None的场景)
不管异常字典的键结构是什么,只要字典内所有值都是None就删除,逻辑兼容性更强:
# 生成筛选掩码:仅保留字典中存在非None值的行 keep_mask = df['full_time_result'].apply( lambda row_dict: not all(val is None for val in row_dict.values()) ) cleaned_df = df[keep_mask]
对应你的示例数据,第3行伊普斯维奇对阵斯温登的赛事,因为full_time_result的三个键值全为None,会被直接过滤掉。
精准匹配固定异常值
如果你确定要删除的就是完全匹配{'1': None, 'X': None, '2': None}的行,可以直接做等值判断,代码更简洁:
# 定义需要排除的异常字典 bad_dict = {'1': None, 'X': None, '2': None} cleaned_df = df[df['full_time_result'] != bad_dict]
注意:如果读取数据后full_time_result列被识别为字符串而非字典类型,需要先通过ast.literal_eval把字符串格式的字典转换为真实字典,再执行上述筛选,否则匹配会失效。
处理完成后,剩下的就是前3场有有效赔率的英格兰甲级联赛赛事记录。
内容的提问来源于stack exchange,提问作者PyNoob
相关产品推荐
相关产品推荐

