df = pd.DataFrame(data={'i1':['x','x','x','x','y','y','y','y'], 'i2':['f','a','w','h','f','a','w','h'], 'c1':np.random.randn(8),'c2':np.random.randn(8)})
df.set_index(['i1','i2'],inplace=True)
df.unstack('i2')
按字母顺序对i2
中的列名进行排序。如何防止这种排序并保持原始序列? 最佳答案
您可以使用ordered Categorical
:
df['i2'] = pd.Categorical(df.i2, categories=['f', 'a', 'w', 'h'], ordered=True)
df.set_index(['i1','i2'],inplace=True)
print (df)
print (df.unstack('i2'))
c1 c2 \
i2 f a w h f a w
i1
x -0.663218 1.005395 0.236088 1.416896 2.729855 0.141692 0.136700
y 0.509393 0.370418 -1.301840 -1.067212 0.945016 -0.617570 1.377235
i2 h
i1
x -0.029020
y -2.346038
关于python - 防止对 Pandas 中的列名称进行排序-python,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38241835/