Pandas如何将字符串列表转为整数列表并处理空列表?
解决DataFrame中字符串列表转整数列表的问题
问题分析
你遇到的ValueError是因为数据中部分列表包含空字符串(比如['', '85']这类情况),直接转int会失败;同时原代码的列表推导式只处理非空列表,会导致转换后的结果长度和原DataFrame不匹配,也会引发问题。
解决方案
用apply结合自定义函数,逐个处理每个列表:
- 定义函数过滤空字符串并转换有效元素为整数
- 对
clickHistory列应用该函数
完整代码示例
import pandas as pd # 构造你的DataFrame data = { 'customerID': ['A', 'B', 'C'], 'clickHistory': [[], ['85','14','23'], []] } df = pd.DataFrame(data) # 定义转换函数:过滤空字符串,将有效字符串转为整数 def str_list_to_int(lst): return [int(x) for x in lst if x.strip()] # x.strip()排除全空格的空字符串 # 应用转换 df['clickHistory'] = df['clickHistory'].apply(str_list_to_int) print(df)
输出结果
customerID clickHistory 0 A [] 1 B [85, 14, 23] 2 C []
为什么这个方法可行
- 空列表会直接返回空,无需额外判断
- 自动过滤列表中的空字符串(包括仅含空格的字符串),避免转换报错
apply逐行处理,保证转换后的结果长度和原DataFrame完全一致,不会出现赋值不匹配的问题
内容的提问来源于stack exchange,提问作者DS Park
相关产品推荐
相关产品推荐

