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

如何在pandas DataFrame中实现多列转置为单列的格式转换

你需要先后结合melt(宽表转长表)和pivot(长表转目标宽表)两个方法实现转换,完整实现代码如下:

import pandas as pd

# 原始数据构造代码
df = pd.DataFrame(
    {'Country': ["NL", "NL", "NL", "BE", "BE", "BE"],
     "Year": [2010, 2011, 2012, 2010, 2011, 2012],
     "Monkeys": [1, 4, 5, 2, 5, 4],
     "Giraffes": [40, 50, 60, 20, 30, 35],
     "Pigs": [10, 15, 20, 30, 35, 40]
     })

# 转换逻辑
# 第一步:将动物列转为行维度
df_melted = df.melt(id_vars=['Country', 'Year'], 
                    value_vars=['Monkeys', 'Giraffes', 'Pigs'],
                    var_name='Animals',
                    value_name='Count')
# 第二步:将年份列转为表头
df_result = df_melted.pivot(index=['Animals', 'Country'], 
                            columns='Year', 
                            values='Count').reset_index()
# 清理列名,去掉columns自带的名称前缀
df_result.columns.name = None

# 如果需要和你示例的排序完全一致(NL在前BE在后),可以补充下面的排序代码
# df_result = df_result.sort_values('Country', ascending=False).reset_index(drop=True)

输出的df_result就是你需要的格式:

Animals Country  2010  2011  2012
0   Monkeys      BE     2     5     4
1  Giraffes      BE    20    30    35
2      Pigs      BE    30    35    40
3   Monkeys      NL     1     4     5
4  Giraffes      NL    40    50    60
5      Pigs      NL    10    15    20

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:36:05