gpt4 book ai didi

python - Pandas :翻转 df-wide-values 和索引?

转载 作者:行者123 更新时间:2023-12-05 04:27:08 25 4
gpt4 key购买 nike

我正在尝试以这种方式翻转值和索引:

df = pd.DataFrame({"day1":{"JOHN":"A","JANE":"B","JILL":"C"},"day2":{"JOHN":"A","JANE":"C","JILL":np.nan},"day3":{"JOHN":"C","JANE":"A","JILL":"B"}})
df
     day1   day2    day3
JOHN A A C
JANE B C A
JILL C NaN B

寻找:

     day1    day2    day3
A JOHN JOHN JANE
B JANE NaN JILL
C JILL JANE JOHN

我无法概念化如何解决这个问题。我的思绪以某种方式跳到枢轴上,但我一无所获。

谢谢

最佳答案

使用DataFrame.stack将 MultiIndex 的第一级转换为列并将 0 列附加到 Index,因此可以使用 Series.unstack转置:

df = df.stack().reset_index(level=0).set_index(0, append=True)['level_0'].unstack().T
print (df)
day1 day2 day3
0
A JOHN JOHN JANE
B JANE NaN JILL
C JILL JANE JOHN

或者使用DataFrame.melt将索引转换为列,然后使用 DataFrame.pivot 删除缺失值:

df = df.reset_index().melt('index').dropna().pivot('value','variable','index')
print (df)
variable day1 day2 day3
value
A JOHN JOHN JANE
B JANE NaN JILL
C JILL JANE JOHN

关于python - Pandas :翻转 df-wide-values 和索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72893918/

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