gpt4 book ai didi

python - Pandas dataframe - 将行索引值重新排列到列标题中

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

我正在尝试从以下数据框中获取:

          DAY    Col1    ColA    ColB    ColC
ID
ABC Mon A 123
DEF Mon A 456
GHI Mon A 789
ABC Tue A 123
DEF Tue A 456
GHI Tue A 789
ABC Wed A 123
DEF Wed A 456
GHI Wed A 789

进入:

    ID    Mon    Tue    Wed
ABC 123 123 123
DEF 456 456 456
GHI 789 789 789

因此,我们的想法是删除空单元格,并将列重新分类为唯一的“天”,后跟该天 ID 的相应值。

感谢我得到的任何帮助,谢谢!

最佳答案

您可以使用:

df = (df.drop('Col1', 1)
.set_index(['ID','DAY'])
.stack()
.reset_index(level=2, drop=True)
.unstack())
print (df)
DAY Mon Tue Wed
ID
ABC 123.0 123.0 123.0
DEF 456.0 456.0 456.0
GHI 789.0 789.0 789.0

说明:

  1. 通过 drop 删除不必要的列 Col1
  2. 通过set_index创建索引
  3. 通过 stack 进行 reshape ,将 NaN 和列名称删除为 MultiIndex
  4. 通过 reset_index 删除 2 级 MultiIndex
  5. unstack reshape

编辑:

df = (df.drop('Col1', 1)
.set_index('DAY', append=True)
.stack()
.reset_index(level=2, drop=True)
.unstack()
)
print (df)
DAY Mon Tue Wed
ID
ABC 123.0 123.0 123.0
DEF 456.0 456.0 456.0
GHI 789.0 789.0 789.0

编辑1:添加reindex:

df = (df.drop('Col1', 1)
.set_index('DAY', append=True)
.stack()
.reset_index(level=2, drop=True)
.unstack()
.reindex(columns=['Wed','Tue','Mon'])
)
print (df)
DAY Wed Tue Mon
ID
ABC 123.0 123.0 123.0
DEF 456.0 456.0 456.0
GHI 789.0 789.0 789.0

关于python - Pandas dataframe - 将行索引值重新排列到列标题中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49421753/

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