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

如何将pandas dataframe单列值传播到其他列并去除重复行

实现方案

核心思路

先建立口味到目标分类的映射规则,再通过透视表将长表转换为宽表,空值自动填充为空字符串。该方案适配大体积Excel数据处理,pandas透视表运算效率足够支撑百万级行数据处理。

具体代码实现

import pandas as pd

# 1. 定义口味到目标列的映射规则,后续新增口味直接在该字典中补充即可
flavor_category_map = {
    'vanilla': 'Favorite Vanilla-based Ice Cream',
    'chocolate': 'Favorite Chocolate-based Ice Cream',
    'strawberry': 'Favorite Berry Ice Cream',
    'butter pecan': 'Favorite Other Ice Cream',
    'mint chocolate chip': 'Favorite Other Ice Cream'
}

# 示例原始数据导入,实际使用时替换为pd.read_excel读取你的Excel文件即可
data = [['tom', 10, 'vanilla'], ['tom', 10, 'chocolate'], ['nick', 15, 'strawberry'], ['nick', 15, 'butter pecan'], ['nick', 15, 'mint chocolate chip'], ['juli', 14, 'strawberry'], ['juli', 14, 'chocolate'], ['juli', 14, 'vanilla']]
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Favorite Ice Cream'])

# 2. 给每行数据新增分类列
df['category'] = df['Favorite Ice Cream'].map(flavor_category_map)

# 3. 透视表转换为宽表
df2 = df.pivot_table(
    index=['Name', 'Age'], # 保留不变的基础信息列
    columns='category', # 分类列作为新的表头
    values='Favorite Ice Cream', # 填充的值为冰淇淋口味
    aggfunc='first', # 若同一个人同一分类下有多个口味,默认取第一个,要保留所有可改为lambda x: ','.join(x)
    fill_value='' # 无匹配值时填充空字符串
).reset_index()

# 4. 按要求调整列顺序
df2 = df2[['Name', 'Age', 'Favorite Vanilla-based Ice Cream', 'Favorite Chocolate-based Ice Cream', 'Favorite Berry Ice Cream', 'Favorite Other Ice Cream']]

# 最终结果可以用df2.to_excel('处理后结果.xlsx', index=False)导出

结果验证

运行后df2的输出和你要求的目标格式完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 13:45:04