Pandas:如何将列转为列表后使用explode函数
问题原因
explode() 未生效的核心原因是:当前price、variations两列存储的是外观和列表一致的字符串,并非Python原生列表类型,pandas无法识别列表内的独立元素,自然不会执行拆分展开操作。
解决步骤
- 先将两列的字符串格式值解析为原生列表,推荐使用
ast.literal_eval做安全解析,容错率远高于手动字符串分割:
import ast # 解析字符串为原生列表 df['price'] = df['price'].apply(ast.literal_eval) df['variations'] = df['variations'].apply(ast.literal_eval)
- 执行多列展开操作,可选将价格列转为数值类型,匹配预期输出格式:
# 同时展开两列,重置索引 df = df.explode(['price', 'variations'], ignore_index=True) # 可选:将价格转为浮点型,去除字符串引号 df['price'] = df['price'].astype(float)
效果验证
执行完成后输出的DataFrame结构完全匹配预期,前两行结果如下:
| product_name | price | variations |
|---|---|---|
| Cream Deluxe Gold (615g) | 130.00 | 6 PIECES |
| Cream Deluxe Gold (615g) | 255.00 | 12 PIECES |
注:1. 展开时两列的列表元素会按位置严格一一对应,不会出现价格和规格错位的问题;2. 如果你的pandas版本低于1.3,不支持同时传入多列给
explode(),可以分两次执行拆分:df = df.explode('price').explode('variations'),最终效果一致。
内容的提问来源于stack exchange,提问作者hawaj
相关产品推荐
相关产品推荐

