在熊猫中旋转并保留列/行顺序

快乐派
df = pd.DataFrame({'foo': ['two', 'two', 'two', 'one', 'one','one'],
                   'bar': ['B', 'A', 'C', 'B', 'A', 'C'],
                   'baz': [1, 2, 3, 4, 5, 6],
                   'zoo': ['x', 'y', 'z', 'q', 'w', 't']})

df.pivot(index='foo', columns='bar', values='baz')

bar  A  B  C
foo         
one  5  4  6
two  2  1  3

如何防止pivot对行和列进行排序?期望的输出:

bar  B  A  C
foo         
two  1  2  3
one  4  5  6
耶斯瑞尔

第一个想法是使用 ordered Categorical,所以pivoting返回正确的排序:

df['foo'] = pd.Categorical(df['foo'], ordered=True, categories=df['foo'].unique())
df['bar'] = pd.Categorical(df['bar'], ordered=True, categories=df['bar'].unique())
df1 = df.pivot(index='foo', columns='bar', values='baz')
print (df1)
bar  B  A  C
foo         
two  1  2  3
one  4  5  6

或者可以通过以下方式更改订单DataFrame.reindex

df1 = (df.pivot(index='foo', columns='bar', values='baz')
         .reindex(index=df['foo'].unique(), columns=df['bar'].unique()))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章