我有以下类型的数据帧,值按3个不同的类别a、B、C分组:
import pandas as pd
A = ['A1', 'A2', 'A3', 'A2', 'A1']
B = ['B3', 'B2', 'B2', 'B1', 'B3']
C = ['C2', 'C2', 'C3', 'C1', 'C3']
value = ['6','2','3','3','5']
df = pd.DataFrame({'categA': A,'categB': B, 'categC': C, 'value': value})
df
看起来像:
categA categB categC value
0 A1 B3 C2 6
1 A2 B2 C2 2
2 A3 B2 C3 3
3 A2 B1 C1 3
4 A1 B3 C3 5
现在,当我想通过C类别取消此df的堆栈时,.unstack()返回一些多索引数据帧,第一级为'value',第二级为我感兴趣的类别C1、C2和C3:
df = df.set_index(['categA','categB','categC']).unstack('categC')
df
输出:
value
categC C1 C2 C3
categA categB
A1 B3 NaN 6 5
A2 B1 3 NaN NaN
B2 NaN 2 NaN
A3 B2 NaN NaN 3
有没有一种快速而干净的方法通过将多索引降低到最高可用级别来摆脱它?这是我想要的输出:
categA categB C1 C2 C3
A1 B3 NaN 6 5
A2 B1 3 NaN NaN
B2 NaN 2 NaN
A3 B2 NaN NaN 3
非常感谢!你知道吗
编辑:
print(df.reset_index())
提供:
categA categB value
categC C1 C2 C3
0 A1 B3 NaN 6 5
1 A2 B1 3 NaN NaN
2 A2 B2 NaN 2 NaN
3 A3 B2 NaN NaN 3
同时添加
reset_index
,unstack
和Series
相关问题 更多 >
编程相关推荐