pandas如何删除列存储数组内的空字符串并生成目标过滤列
问题排查与解决方案
原有代码的错误点
- return语句缩进错误:
remve函数里的return写在了while循环内部,导致每次只删除1个空字符串就提前返回,没有清理完所有空值 - 错误将列转为字符串:你调用了
astype(str),把原本的列表类型转成了字符串,后续对字符串执行remove操作完全不生效 - 列名拼写错误:你的目标列名是
new_column1,代码里写的是new_columnn1多了一个n,还多了不必要的前后空格 - 没有处理浮点数转整数的需求:你的示例结果里把末尾的float类型整数转成了int类型,原有代码没有这步逻辑
正确实现代码
如果你的new_column1列存储的是字符串格式的列表,需要先转成真实列表,完整代码如下:
import ast import pandas as pd def filter_list(lst): # 兼容字符串形式的列表输入 if isinstance(lst, str): lst = ast.literal_eval(lst) filtered = [] for item in lst: # 跳过空字符串 if item == "": continue # 整数型浮点数转成int,和示例输出格式对齐 if isinstance(item, float) and item.is_integer(): filtered.append(int(item)) else: filtered.append(item) return filtered df['Filtered Column'] = df['new_column1'].apply(filter_list)
如果确认new_column1里的元素本身就是列表类型,删掉函数里判断字符串转列表的两行即可。
内容的提问来源于stack exchange,提问作者Cuckoo
相关产品推荐
相关产品推荐

