pandas 融化了多个价值变量 [英] Pandas Melt with Multiple Value Vars

查看:53
本文介绍了 pandas 融化了多个价值变量的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个像这样的宽格式数据集

I have a data set which is in wide format like this

   Index Country     Variable 2000 2001 2002 2003 2004 2005
   0     Argentina   var1     12   15   18    17  23   29
   1     Argentina   var2     1    3    2     5   7    5
   2     Brazil      var1     20   23   25   29   31   32
   3     Brazil      var2     0    1    2    2    3    3

我想重整数据以使年份,var1和var2成为新列

I want to reshape my data to long so that year, var1, and var2 become new columns

  Index Country     year   var1 var2
  0     Argentina   2000   12   1
  1     Argentina   2001   15   3
  2     Argentina   2002   18   2
  ....
  6     Brazil      2000   20   0
  7     Brazil      2001   23   1

当我只写一个变量时,我的代码就可以工作

I got my code to work when I only had one variable by writing

df=(pd.melt(df,id_vars='Country',value_name='Var1', var_name='year'))

我不知道如何对var1,var2,var3等执行此操作.

I cant figure out how to do this for a var1,var2, var3, etc.

推荐答案

除了融化之外,您还可以使用堆栈和非堆栈的组合:

Instead of melt, you can use a combination of stack and unstack:

(df.set_index(['Country', 'Variable'])
   .rename_axis(['Year'], axis=1)
   .stack()
   .unstack('Variable')
   .reset_index())

Variable    Country  Year  var1  var2
0         Argentina  2000    12     1
1         Argentina  2001    15     3
2         Argentina  2002    18     2
3         Argentina  2003    17     5
4         Argentina  2004    23     7
5         Argentina  2005    29     5
6            Brazil  2000    20     0
7            Brazil  2001    23     1
8            Brazil  2002    25     2
9            Brazil  2003    29     2
10           Brazil  2004    31     3
11           Brazil  2005    32     3

这篇关于 pandas 融化了多个价值变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆