将Pandas列中的列表追加到Python列表时元素类型异常问题
这个问题大概率是你的col1列里的原始列表本身就混合了字符串和数值类型——可能是数据导入(比如从CSV/Excel读取)时解析出了问题,导致第一个元素被存成了字符串。下面给你几种简单的解决思路:
方法1:先统一列内列表的类型,再提取
先把col1中每个子列表的所有元素转成float类型,再提取成Python列表:
# 统一col1内每个元素的类型为float df['col1'] = df['col1'].apply(lambda x: [float(item) for item in x]) # 直接转成Python列表 new_list = df['col1'].tolist()
方法2:如果是读取时的字符串列表解析问题
如果你的col1是从字符串形式的列表(比如"[51.97559, 4.12565]")解析来的,先通过ast.literal_eval解析成列表,再转类型:
import ast # 解析字符串为列表并统一转float df['col1'] = df['col1'].apply(lambda x: [float(num) for num in ast.literal_eval(x)]) new_list = df['col1'].tolist()
方法3:在原有循环中直接处理类型
如果你想保留原来的循环写法,在append的时候直接转换每个元素的类型:
new_list = [] for val in df['col1'].values: # 遍历子列表的每个元素,转成float后再加入new_list new_list.append([float(item) for item in val])
这样处理后,new_list里的所有元素就都是数值类型了。
内容的提问来源于stack exchange,提问作者jovicbg
相关产品推荐
相关产品推荐

