pandas 如何将数据框列转换为熊猫中的行

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/44678829/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-09-14 03:50:50  来源:igfitidea点击:

How to transpose dataframe columns into rows in pandas

pythonpandas

提问by Plinus

I have below dataframe and want to transpose the columns aftr 3rd column into rows. Please help on this.

我有下面的数据框,并希望将第 3 列之后的列转换为行。请帮忙解决这个问题。

df:
country year    perc    data1   data2   data3
IN      2015    hjk     75      81      96
US      2015    KTM     100     289     632

Results:                
country year    perc    TransposedColumn    Value   
IN      2015    hjk     data1               75  
IN      2015    hjk     data2               81  
IN      2015    hjk     data3               96  
US      2015    KTM     data1               100 
US      2015    KTM     data2               289 
US      2015    KTM     data3               632 

回答by Scott Boston

use melt:

使用melt

df.melt(id_vars=['country','year','perc'])

older versions of Pandas:

旧版本的Pandas:

pd.melt(df, id_vars=['country','year','perc'])

Output:

输出:

  country  year perc variable  value
0      IN  2015  hjk    data1     75
1      US  2015  KTM    data1    100
2      IN  2015  hjk    data2     81
3      US  2015  KTM    data2    289
4      IN  2015  hjk    data3     96
5      US  2015  KTM    data3    632

Option #2

选项#2

df.set_index(['country','year','perc']).stack().reset_index()

Output:

输出:

  country  year perc level_3    0
0      IN  2015  hjk   data1   75
1      IN  2015  hjk   data2   81
2      IN  2015  hjk   data3   96
3      US  2015  KTM   data1  100
4      US  2015  KTM   data2  289
5      US  2015  KTM   data3  632