gpt4 book ai didi

python - 将 Dataframe 中的所有列转换为 MultiIndex Dataframe 中的单个二级索引

转载 作者:太空宇宙 更新时间:2023-11-03 16:17:24 25 4
gpt4 key购买 nike

我有一个名为 Pop 的数据框,如下所示(抱歉,这格式不太好,但它是一个索引数据框(状态是索引),其中包含每年的列。我只放了一小部分样本数据):

           2007    2008    2009
State
Alabama 4637904 4677464 4708708

有没有一种方法可以轻松地将其转换为多索引数据帧,其中年份成为二级索引。唯一的项目是一个新字段“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:我对各州人口使用了随机值

关于python - 将 Dataframe 中的所有列转换为 MultiIndex Dataframe 中的单个二级索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38820879/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com