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

如何在Pandas中将同一列的两类数据转为独立列并去重?

Pandas拆分同一列的两类数据为独立列(去重)

核心思路

利用透视或分组展开的方式,将subject列的'Tot'和'voluntary'作为新列名,把对应数值映射到同一行,同时保留其他标识列,自然避免行重复。

方案一:使用pivot(无重复标识组合场景)

如果你的数据中,每个标识组合(比如country、year、sector)仅对应'Tot'和'voluntary'各一行,直接用pivot最简洁:

# 替换为你的DataFrame名称和实际列名
pivoted_df = df.pivot(
    index=['country', 'year', 'sector'],  # 所有需要保留的非拆分列
    columns='subject',
    values='value'  # 需要关联到新列的数值列
).reset_index()

# 清理列名,移除多级索引
pivoted_df.columns = ['country', 'year', 'sector', 'Tot', 'voluntary']

方案二:使用groupby+unstack(含重复标识组合场景)

如果存在同一标识组合对应多行相同subject的情况,先聚合再展开:

# 先按标识列+subject分组,用sum/mean等聚合重复值(根据需求选择)
grouped = df.groupby(['country', 'year', 'sector', 'subject'])['value'].sum()
# 展开subject为列
unstacked_df = grouped.unstack('subject').reset_index()
# 重命名列
unstacked_df.columns = ['country', 'year', 'sector', 'Tot', 'voluntary']

效果说明

处理后的数据会将原两行的'Tot'和'voluntary'数值合并到同一行的独立列中,完全消除行重复,最终结构示例:

countryyearsectorTotvoluntary
AUS2000PUB12345
AUS2001PUB6789

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 06:01:43