如何旋转DF?实现长格式到宽格式的转换求助
解决DataFrame旋转为宽格式的方法
用pandas的pivot方法就能快速实现你要的长格式转宽格式需求,具体操作步骤如下:
1. 确保DataFrame列名正确
如果你的原始DataFrame没有列名,先给三列分别命名(对应你的数据:分组、类别、数值):
import pandas as pd # 以你的示例数据构造DataFrame data = [ ['wbp', 'l', 45], ['wbp', 'ml', 7], ['wbp', 'k', 27], ['wbp', 'mk', 37], ['bpz', 'l', 22], ['bpz', 'ml', 34], ['bpz', 'k', 12], ['bpz', 'mk', 41], ['pmh', 'l', 35], ['pmh', 'ml', 13], ['pmh', 'k', 9], ['pmh', 'mk', 44] ] df = pd.DataFrame(data, columns=['group', 'category', 'value'])
2. 使用pivot转换格式
直接调用pivot方法,指定行索引、列名和对应数值的列:
pivoted_df = df.pivot(index='group', columns='category', values='value')
3. 查看结果
打印转换后的DataFrame即可得到目标格式:
print(pivoted_df)
输出结果:
category l ml k mk group wbp 45 7 27 37 bpz 22 34 12 41 pmh 35 13 9 44
特殊情况处理
如果数据中存在同一group+category的重复行,可使用pivot_table指定聚合方式(比如取第一个值):
pivoted_df = df.pivot_table(index='group', columns='category', values='value', aggfunc='first')
内容的提问来源于stack exchange,提问作者maciej.o
相关产品推荐
相关产品推荐

