gpt4 book ai didi

python - 排列几个 Pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:38 25 4
gpt4 key购买 nike

我有以下类型的三个数据框(A、B、C)

          2006   2007   2008   2009   2010   2011   
Age
0 1556 1623 5943 6133 6111 6345
1 5707 5838 0355 6049 2366 5828
2 5616 5770 5899 6080 6137 6303
3 5564 5593 8129 9388 1341 6215
4 5702 5598 7030 8576 9827 2007

我想通过以下设计将它们放入一个数据框中(多索引 0

           A     B     C
Year Age
2006 0 1556 3532 23
1 5707 4352 53
2 5616 2533 67
...
2011 3 6215 4255 55
4 9827 3333 50

有什么建议吗?

干杯,迈克

最佳答案

您可以使用 concatunstack :

df1 = pd.DataFrame({
'2010': [6111, 2366, 6137, 1341, 9827],
'2007': [1623, 5838, 5770, 5593, 5598],
'2008': [5943, 355, 5899, 8129, 7030],
'2011': [6345, 5828, 6303, 6215, 2007],
'2006': [1556, 5707, 5616, 5564, 5702],
'2009': [6133, 6049, 6080, 9388, 8576]})

print (df1)
2006 2007 2008 2009 2010 2011
0 1556 1623 5943 6133 6111 6345
1 5707 5838 355 6049 2366 5828
2 5616 5770 5899 6080 6137 6303
3 5564 5593 8129 9388 1341 6215
4 5702 5598 7030 8576 9827 2007

df2 = df1*2
df3 = df1*3
print (pd.concat([df1.unstack(),df2.unstack(),df3.unstack()], axis=1, keys=list('ABC'))
.rename_axis(('Year','Age')))

A B C
Year Age
2006 0 1556 3112 4668
1 5707 11414 17121
2 5616 11232 16848
3 5564 11128 16692
4 5702 11404 17106
2007 0 1623 3246 4869
1 5838 11676 17514
...

concatstack , 但接下来是必要的 swaplevelsort_index , 最后重命名关卡名称 rename_axis :

print (pd.concat([df1,df2,df3], axis=1, keys=list('ABC'))
.stack()
.swaplevel(0,1)
.sort_index()
.rename_axis(('Year','Age')))

A B C
Year Age
2006 0 1556 3112 4668
1 5707 11414 17121
2 5616 11232 16848
3 5564 11128 16692
4 5702 11404 17106
2007 0 1623 3246 4869
1 5838 11676 17514
2 5770 11540 17310
3 5593 11186 16779
4 5598 11196 16794
2008 0 5943 11886 17829
1 355 710 1065
2 5899 11798 17697
...

关于python - 排列几个 Pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40964506/

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