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
uj5u.com熱心網友回復:
第一個想法是使用 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()))
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/464390.html
上一篇:顯示附加少于16次的ID
