所以数据框是
computer status count
A on 45
off 44
B on 34
off 32
rmt_off 12
C on 23
off 23
rmt_off 2
我进行了
df.set_index('status').T
给了我
status on off on off rmt_off on off rmt_off
computer A B C
Count 45 45 34 32 12 23 23 2
预期产出:
Computer On off Rmt_off
A 45 45 NaN
B 34 32 12
C 23 23 2
如何使值显示如下? 有没有内置功能?
答案 0 :(得分:3)
如果MultiIndex
一列DataFrame
:
unstack
print (df.index)
MultiIndex(levels=[['A', 'B', 'C'], ['off', 'on', 'rmt_off']],
labels=[[0, 0, 1, 1, 1, 2, 2, 2], [1, 0, 1, 0, 2, 1, 0, 2]],
names=['computer', 'status'])
print (df['count'].unstack())
status off on rmt_off
computer
A 44.0 45.0 NaN
B 32.0 34.0 12.0
C 23.0 23.0 2.0
编辑:需要使用正向填充将空字符串替换为NaN
,最后一次使用pivot
:
df['computer'] = df['computer'].mask(df['computer'] == '').ffill()
df = df.pivot('computer','status', 'count')
答案 1 :(得分:2)
尝试按replace
和ffill
修复您的数据框,然后我们可以将pivot
应用于原始df,将长格式更改为宽
df=df.replace('',np.nan).ffill()
df.pivot(*df.columns)
Out[437]:
status off on rmt_off
computer
A 44.0 45.0 NaN
B 32.0 34.0 12.0
C 23.0 23.0 2.0
答案 2 :(得分:0)
尝试df.unstack(level = 1)。
df.unstack(level=1)
Out[84]:
count
off on
A NaN NaN
B NaN NaN
C NaN NaN