融化在 pandas 失去指数
Melting in pandas loses index
我有以下数据框:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Year
2010 9.8 9.8 9.9 9.9 9.6 9.4 9.4 9.5 9.5 9.4 9.8 9.3
2011 9.1 9.0 9.0 9.1 9.0 9.1 9.0 9.0 9.0 8.8 8.6 8.5
2012 8.3 8.3 8.2 8.2 8.2 8.2 8.2 8.1 7.8 7.8 7.7 7.9
我想实现以下结果:
Month Values
Year
2010 Jan 9.8
2010 Feb 9.8
2010 Mar 9.9
etc......
我试过这里提出的方法:
:
df = pd.melt(df.reset_index(), id_vars='index',value_vars=months)
"Months" 是我通过获取月份的列名列表创建的列表:
months = df.columns.values.tolist()[1:]
然而,结果是:
index variable value
0 NaN Jan 9.8
1 NaN Jan 9.1
2 NaN Jan 8.3
3 NaN Jan 8.0
4 NaN Jan 6.6
所以,我想保留年份值作为索引。我怎样才能做到这一点?
谢谢。
与melt
:
df.reset_index().melt('Year',var_name='Month',value_name='Values').set_index('Year')
Month Values
Year
2010 Jan 9.8
2011 Jan 9.1
2012 Jan 8.3
2010 Feb 9.8
2011 Feb 9.0
.........
.......
与stack()
:
df.rename_axis('Month',axis=1).stack().reset_index(1,name='Values')
Month Values
Year
2010 Jan 9.8
2010 Feb 9.8
2010 Mar 9.9
2010 Apr 9.9
2010 May 9.6
2010 Jun 9.4
.......
......
如果你有这样一个好的索引,你可以stack
:
df.rename_axis('Month', axis='columns').stack().to_frame('Values')
rename_axis
方法只是一些让索引标签漂亮的糖。
我有以下数据框:
Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
Year
2010 9.8 9.8 9.9 9.9 9.6 9.4 9.4 9.5 9.5 9.4 9.8 9.3
2011 9.1 9.0 9.0 9.1 9.0 9.1 9.0 9.0 9.0 8.8 8.6 8.5
2012 8.3 8.3 8.2 8.2 8.2 8.2 8.2 8.1 7.8 7.8 7.7 7.9
我想实现以下结果:
Month Values
Year
2010 Jan 9.8
2010 Feb 9.8
2010 Mar 9.9
etc......
我试过这里提出的方法:
df = pd.melt(df.reset_index(), id_vars='index',value_vars=months)
"Months" 是我通过获取月份的列名列表创建的列表:
months = df.columns.values.tolist()[1:]
然而,结果是:
index variable value
0 NaN Jan 9.8
1 NaN Jan 9.1
2 NaN Jan 8.3
3 NaN Jan 8.0
4 NaN Jan 6.6
所以,我想保留年份值作为索引。我怎样才能做到这一点? 谢谢。
与melt
:
df.reset_index().melt('Year',var_name='Month',value_name='Values').set_index('Year')
Month Values
Year
2010 Jan 9.8
2011 Jan 9.1
2012 Jan 8.3
2010 Feb 9.8
2011 Feb 9.0
.........
.......
与stack()
:
df.rename_axis('Month',axis=1).stack().reset_index(1,name='Values')
Month Values
Year
2010 Jan 9.8
2010 Feb 9.8
2010 Mar 9.9
2010 Apr 9.9
2010 May 9.6
2010 Jun 9.4
.......
......
如果你有这样一个好的索引,你可以stack
:
df.rename_axis('Month', axis='columns').stack().to_frame('Values')
rename_axis
方法只是一些让索引标签漂亮的糖。