如何在Pandas DataFrame中忽略列无效值并填充默认值
解决Pandas转换列值为整数列表时的异常处理问题
你的原始DataFrame定义如下:
import pandas as pd ds = {'col1' : ['1489900119000', '้้คค,1']} df = pd.DataFrame(data=ds)
要实现**有效值转整数列表、无效值填充默认值[9,9]**的需求,可以通过以下几种方式解决:
方法1:自定义函数 + apply(推荐)
通过自定义函数捕获转换时的异常,逻辑清晰易维护:
def str_to_int_list(s): try: # 将字符串每个字符转为整数,组成列表 return list(map(int, str(s))) except ValueError: # 转换失败时返回默认值 return [9, 9] # 应用函数到col1列生成col2 df['col2'] = df['col1'].apply(str_to_int_list)
方法2:带条件判断的列表推导式
如果能明确判断有效值的特征(比如所有字符都是数字),可以直接用列表推导式:
df['col2'] = [ list(map(int, str(x))) if all(c.isdigit() for c in str(x)) else [9,9] for x in df.col1 ]
最终结果
执行后得到的DataFrame如下:
col1 col2 0 1489900119000 [1, 4, 8, 9, 9, 0, 0, 1, 1, 9, 0, 0, 0] 1 ้้คค,1 [9, 9]
内容的提问来源于stack exchange,提问作者Giampaolo Levorato
相关产品推荐
相关产品推荐

