如何在Python中进行行-列转换/旋转?

2024-09-30 20:18:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我已经用Python编写了下面的代码

import pandas as pd


data = {'Mnth':["Jan", "Feb", "Mar", "April","May"],         
       'Income':["80","90","60", "30", "50"]} 

df = pd.DataFrame(data) 

print(df)

结果是

enter image description here

我正在寻找这样一种转变

Jan    Feb  Mar  April   May
---    ---  ---  -----   ---- 

80     90   60     30    50

我试过使用Pivot函数,如下所示

pivot  =df.pivot(index ='Mnth', columns ='Income') 

print(pivot)

但结果是

Empty DataFrame
Columns: []
Index: [April, Feb, Jan, Mar, May]

Tags: 代码importdataframedfdatamarmayjan
1条回答
网友
1楼 · 发布于 2024-09-30 20:18:19

方法一:^{}+^{}

new_df=df.set_index('Mnth').T
print(new_df)

输出

Mnth   Jan Feb Mar April May
Income  80  90  60    30  50

可以使用^{}删除列的名称(Mnth),使用^{}重置数据帧索引

new_df=df.set_index('Mnth').T.rename_axis(columns=None).reset_index(drop=True)
print(new_df)

输出

  Jan Feb Mar April May
0  80  90  60    30  50

方法二:^{}

df['Income']=df['Income'].astype(int)
new_df=df.pivot_table(columns='Mnth',values='Income')
print(new_df)

输出

Mnth    April  Feb  Jan  Mar  May
Income     30   90   80   60   50

带str类型的透视表:

需要更改要添加的默认aggfunc:

new_df=df.pivot_table(columns='Mnth',values='Income',aggfunc=lambda x: ' '.join(x))
print(new_df)

Mnth   April Feb Jan Mar May
Income    30  90  80  60  50

相关问题 更多 >