Python 重新排序堆叠数据帧
我正在尝试重新排列堆叠的数据帧。例如,我有:Python 重新排序堆叠数据帧,python,pandas,Python,Pandas,我正在尝试重新排列堆叠的数据帧。例如,我有: import numpy as np testdf = pd.DataFrame(np.random.randn(5,4), index=range(1,6), columns = ['Eric','Jane','Mary','Don']) testdf.stack() 我的输出是: 1 Eric -0.301206 Jane 1.327379 Mary 1.066828 Don -0.429380 2
import numpy as np
testdf = pd.DataFrame(np.random.randn(5,4), index=range(1,6), columns = ['Eric','Jane','Mary','Don'])
testdf.stack()
我的输出是:
1 Eric -0.301206
Jane 1.327379
Mary 1.066828
Don -0.429380
2 Eric 0.196671
Jane -1.232447
Mary 1.139221
Don 1.441183
3 Eric -0.912282
Jane -0.204741
Mary -0.802078
Don 0.149269
4 Eric -0.168387
Jane 1.608617
Mary 2.237823
Don 0.973450
5 Eric -0.290492
Jane -0.374205
Mary 0.986653
Don 1.584820
dtype: float64
有没有办法在不重新排列原始数据帧的列的情况下更改这些名称的顺序?我的最终目标是告诉pandas,Eric、Don、Mary、Jane
是我以后所有输出的理想顺序,尽管它不是按字母顺序排列的,类似于R中的levels
函数
我想做的事,谢谢 使用索引上的
set_levels
对值进行重新排序:
In [67]:
t.index.set_levels([[1,2,3,4,5],['Eric', 'Don', 'Mary', 'Jane']], inplace=True)
t
Out[67]:
1 Eric 1.139358
Don -0.368389
Mary -1.907364
Jane 0.444930
2 Eric -0.113019
Don -0.823055
Mary -1.397237
Jane 0.268164
3 Eric -1.246184
Don 0.356804
Mary -0.286919
Jane 0.845538
4 Eric -0.674448
Don 0.903695
Mary 0.873403
Jane -1.321770
5 Eric 1.308402
Don -1.901295
Mary 0.122430
Jane 0.110339
dtype: float64
从docstrings中,(还有一个简短的解释):
更新
如果您的pandas版本为0.15.0
或更高,则set_levels
接受level
arg,这使得调整其中一个级别更为清晰:
In [244]:
testdf.index.set_levels(['Eric', 'Don', 'Mary', 'Jane'], level=1, inplace=True)
testdf
Out[244]:
1 Eric -0.026484
Don 0.223672
Mary 0.266461
Jane 1.121323
2 Eric -0.250781
Don -1.079661
Mary 0.525879
Jane 1.692250
3 Eric -1.337944
Don 0.765228
Mary -1.297232
Jane 1.121497
4 Eric 2.611441
Don 0.805786
Mary -0.174193
Jane -0.371906
5 Eric -0.084597
Don 1.794861
Mary 0.766524
Jane 0.150359
dtype: float64
In [244]:
testdf.index.set_levels(['Eric', 'Don', 'Mary', 'Jane'], level=1, inplace=True)
testdf
Out[244]:
1 Eric -0.026484
Don 0.223672
Mary 0.266461
Jane 1.121323
2 Eric -0.250781
Don -1.079661
Mary 0.525879
Jane 1.692250
3 Eric -1.337944
Don 0.765228
Mary -1.297232
Jane 1.121497
4 Eric 2.611441
Don 0.805786
Mary -0.174193
Jane -0.371906
5 Eric -0.084597
Don 1.794861
Mary 0.766524
Jane 0.150359
dtype: float64