You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.16 08:18:03