将 Dataframe 中的所有列转换为 MultiIndex Dataframe 中的单个二级索引
Convert all columns in a Dataframe to a single secondary index in a MultiIndex Dataframe
我有一个名为 Pop 的数据框,如下所示(抱歉,格式不太好,但它是一个单独的 Index DataFrame(State 是索引),每年都有列。我只放了一个小的数据样本):
2007 2008 2009
State
Alabama 4637904 4677464 4708708
有没有办法轻松地将其转换为 MultiIndex DataFrame,其中 Year 成为二级索引。唯一的项目是一个新字段 'Population',它从原始数据帧中获取数据。理想情况下它看起来像:
Population
State Year
Alabama 2007 4637904
Alabama 2008 4677464
Alabama 2009 4708708
等...
我一直在寻找某种代码,因为这似乎可以在 Python 中处理。谢谢!
您可以使用 melt 将列转换为行:
In [10]: df
Out[10]:
state 2007 2008 2009
0 Alabama 4637904 4677464 4708708
1 Maine 1234567 1432765 1432567
2 Florida 19432765 19123456 19765654
In [13]: out = pd.melt(df, id_vars=['state'], var_name=['year'], value_name='population')
In [14]: out
Out[14]:
state year population
0 Alabama 2007 4637904
1 Maine 2007 1234567
2 Florida 2007 19432765
3 Alabama 2008 4677464
4 Maine 2008 1432765
5 Florida 2008 19123456
6 Alabama 2009 4708708
7 Maine 2009 1432567
8 Florida 2009 19765654
最后设置索引:
In [15]: out.set_index(['state', 'year'])
Out[15]:
population
state year
Alabama 2007 4637904
Maine 2007 1234567
Florida 2007 19432765
Alabama 2008 4677464
Maine 2008 1432765
Florida 2008 19123456
Alabama 2009 4708708
Maine 2009 1432567
Florida 2009 19765654
PS :我对州人口使用了随机值
我有一个名为 Pop 的数据框,如下所示(抱歉,格式不太好,但它是一个单独的 Index DataFrame(State 是索引),每年都有列。我只放了一个小的数据样本):
2007 2008 2009
State
Alabama 4637904 4677464 4708708
有没有办法轻松地将其转换为 MultiIndex DataFrame,其中 Year 成为二级索引。唯一的项目是一个新字段 'Population',它从原始数据帧中获取数据。理想情况下它看起来像:
Population
State Year
Alabama 2007 4637904
Alabama 2008 4677464
Alabama 2009 4708708
等...
我一直在寻找某种代码,因为这似乎可以在 Python 中处理。谢谢!
您可以使用 melt 将列转换为行:
In [10]: df
Out[10]:
state 2007 2008 2009
0 Alabama 4637904 4677464 4708708
1 Maine 1234567 1432765 1432567
2 Florida 19432765 19123456 19765654
In [13]: out = pd.melt(df, id_vars=['state'], var_name=['year'], value_name='population')
In [14]: out
Out[14]:
state year population
0 Alabama 2007 4637904
1 Maine 2007 1234567
2 Florida 2007 19432765
3 Alabama 2008 4677464
4 Maine 2008 1432765
5 Florida 2008 19123456
6 Alabama 2009 4708708
7 Maine 2009 1432567
8 Florida 2009 19765654
最后设置索引:
In [15]: out.set_index(['state', 'year'])
Out[15]:
population
state year
Alabama 2007 4637904
Maine 2007 1234567
Florida 2007 19432765
Alabama 2008 4677464
Maine 2008 1432765
Florida 2008 19123456
Alabama 2009 4708708
Maine 2009 1432567
Florida 2009 19765654
PS :我对州人口使用了随机值