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

如何用Pandas将指定格式DataFrame行转列?.T()方法无效

Pandas 长格式DataFrame转宽格式解决方案

原始DataFrame:

id |feature   count
A  |apples      2
A  |oranges     5
A  |pears       9
A  |mandarines  12

目标格式:

apples oranges pears mandarines
A    2     5      9      12

用.T转置没用是因为转置只是单纯互换行列,没法把feature列的取值转成新的列名、count列的值对应填充。正确的做法是用透视操作,两种常用方法:

方法1:使用pivot(无重复组合时用)

先构造原始数据:

import pandas as pd

df = pd.DataFrame({
    'id': ['A', 'A', 'A', 'A'],
    'feature': ['apples', 'oranges', 'pears', 'mandarines'],
    'count': [2, 5, 9, 12]
})

执行转换:

# 把id设为索引,feature转成列,count作为填充值
result = df.pivot(index='id', columns='feature', values='count')

输出结果就是你要的格式:

feature  apples  oranges  pears  mandarines
id                                         
A             2        5      9          12

如果想去掉feature这个列名层级,可以加一行:

result.columns.name = None

方法2:使用pivot_table(有重复id+feature组合时用)

如果你的数据里同一个id和feature有重复行,需要聚合(比如求和、取均值),用这个方法:

# aggfunc指定聚合方式,这里用sum
result = df.pivot_table(index='id', columns='feature', values='count', aggfunc='sum')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:22:35