如何用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
相关产品推荐
相关产品推荐

