如何使用Pandas拆分并整理DataFrame中的单列数据为Color和Size两列
如何使用Pandas拆分并整理DataFrame中的单列数据为Color和Size两列
嗨,我来帮你搞定这个Pandas数据拆分的问题!你这个情况很典型——单列数据里混了颜色和尺码两种信息,而且格式还不太统一(有的是尺码在前、有的颜色在前,分隔符周围的空格也没对齐),不过没关系,咱们一步步来解决。
首先,先把你的示例数据转换成Pandas DataFrame,方便后续操作:
import pandas as pd # 构造你提供的示例数据 data = { 'variant_label': [ 'XL / White', 'Black/ S', 'White / S', 'L/ White', 'X/ Black', 'Black / XL', 'White / M', 'Black / M', 'Black / M', 'Black / L', 'XL / White' ] } df = pd.DataFrame(data)
接下来,我们需要处理格式不统一的问题,同时准确区分颜色和尺码。这里我推荐用自定义函数+预定义关键词列表的方式,既直观又能适配各种格式:
# 先定义所有可能的颜色和尺码(如果后续有新增,直接加在这里就行) colors = ['Black', 'White'] sizes = ['XL', 'L', 'M', 'S', 'X'] # 定义拆分函数:处理每个单元格的内容,返回颜色和尺码 def split_color_size(text): # 按"/"分割内容,同时去掉每个部分的多余空格 parts = [part.strip() for part in text.split('/')] # 从分割后的内容里匹配颜色和尺码 color = next((p for p in parts if p in colors), None) size = next((p for p in parts if p in sizes), None) return pd.Series([color, size]) # 把函数应用到整个列,生成新的Color和Size列 df[['Color', 'Size']] = df['variant_label'].apply(split_color_size)
现在你可以查看处理后的结果:
print(df[['Color', 'Size']])
输出结果完全符合你的需求:
Color Size 0 White XL 1 Black S 2 White S 3 White L 4 Black X 5 Black XL 6 White M 7 Black M 8 Black M 9 Black L 10 White XL
这个方法的好处在于,不管原始数据里颜色和尺码的顺序如何,也不管分隔符周围有没有空格,都能准确提取出对应的信息。如果后续有新的颜色或尺码,只需要更新colors和sizes列表就可以了,非常灵活。
备注:内容来源于stack exchange,提问作者Ngoc Nguyen
相关产品推荐
相关产品推荐

