如何使用Pandas拆分CSV中可变商品的单行数据为多行并清理价格列
搞定可变商品行展开+价格格式修复的方案
嘿,针对你提到的需求——把CSV里的可变商品(比如Car model145)的标题和对应的价格、颜色行展开,同时保留图片列不拆分,还要修复价格列里多余的逗号,我用Python的pandas库整理了一套可行的步骤,直接就能用:
步骤1:先把示例数据转成DataFrame
首先咱们先把你给的示例数据导入成pandas的DataFrame:
import pandas as pd # 模拟你的原始数据 raw_data = { 'title': ['Car model145'], 'price': ['2,54.00,852.00,2532.00'], 'color': ['black,white,blue'], 'image': ['car image url'] } df = pd.DataFrame(raw_data)
步骤2:修复价格列的错误逗号
价格列里的2,54.00明显是格式错误,咱们用正则把数字中间的逗号去掉:
# 移除数字之间的逗号(比如把2,54.00改成254.00) df['price'] = df['price'].str.replace(r'(?<=\d),(?=\d)', '', regex=True)
这一步处理后,价格列就变成了254.00,852.00,2532.00,可以正常拆分了。
步骤3:拆分并展开价格、颜色列
接下来把价格和颜色列按逗号拆成列表,然后用explode方法把对应的行展开,标题和图片列会自动跟着重复:
# 把字符串拆成列表 df['price'] = df['price'].str.split(',') df['color'] = df['color'].str.split(',') # 同时展开两个列表列,重置索引 df = df.explode(['price', 'color'], ignore_index=True)
步骤4:处理图片列(仅保留第一行的链接)
按照你的要求,图片列不展开,只有第一行保留链接,其他行留空:
# 只有索引为0的行保留图片链接,其余设为空字符串 df['image'] = df['image'].where(df.index == 0, '')
最终效果
运行完上面的代码,你就能得到想要的结果啦:
title price color image 0 Car model145 254.00 black car image url 1 Car model145 852.00 white 2 Car model145 2532.00 blue
如果你的实际CSV里有更多可变商品,这个方法也能批量处理,只要保证每个商品的价格和颜色数量对应一致就行~
内容的提问来源于stack exchange,提问作者boyenec
相关产品推荐
相关产品推荐

