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

使用pandas groupby提取列唯一组合并构建按颜色分类的新DataFrame

解决方法

首先先修正你提供的示例DataFrame的小问题:原数据中Colors列只有9个值,其余列均为10个值,直接运行会报错,我先补全数据后给出实现代码。

方法1:直接拼接后分组转换

这是最简便的实现方式,步骤如下:

import pandas as pd

# 补全后的示例DataFrame
df = pd.DataFrame({
    'Colors': ['blue', 'blue', 'orange', 'red', 'purple', 'orange', 'purple', 'blue', 'brown', 'red'], 
    'Price': ['500', '500', '200', '250', '300', '765', '1100', '762', '650', '625'],
    'Style': ['farm', 'contemporary', 'modern', 'MDM', 'MDM', 'contemporary', 'farm', 'contemporary', 'farm', 'MDM'],
    'Location': ['far', 'near', 'far', 'far', 'near', 'far', 'far', 'near', 'far', 'near']
})

# 生成拼接后的组合字符串
df['comb'] = df['Price'] + '_' + df['Style'] + '_' + df['Location']

# 按颜色分组取唯一组合,转换为目标格式DataFrame
result = df.groupby('Colors')['comb'].unique().apply(pd.Series).T

# 可选:将列名首字母大写匹配你的要求
result.columns = result.columns.str.capitalize()

输出的result就符合你的要求,不同颜色的组合数不一致时,空缺位置会自动填充NaN。

方法2:基于你已有的groupby size结果转换

如果你已经生成了df.groupby(['Colors', 'Price', 'Style', 'Location']).size()的结果,可以用以下代码转换:

# 你已有的分组计数结果
grouped_series = df.groupby(['Colors', 'Price', 'Style', 'Location']).size()

# 重置索引后拼接字段
temp_df = grouped_series.reset_index()
temp_df['comb'] = temp_df['Price'] + '_' + temp_df['Style'] + '_' + temp_df['Location']

# 转换为目标格式
result = temp_df.groupby('Colors')['comb'].apply(pd.Series).unstack(level=0)
result.columns = result.columns.str.capitalize()

内容的提问来源于stack exchange,提问作者MAtennis9

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 06:24:04