我试图以这种方式翻转值和索引:
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