Python 按行/列排序标签
假设我有一个数据帧:Python 按行/列排序标签,python,pandas,Python,Pandas,假设我有一个数据帧: df = pandas.DataFrame(np.random.randn(5,3), columns = ['A','B','C'], index = ['r0', 'r1', 'r2', 'r3', 'r4') A B C r0 -0.830305 -0.395235 0.589917 r1 -1.378534 -0.484204 -1.068907 r2 -0.407720 1.922942 -1.120
df = pandas.DataFrame(np.random.randn(5,3),
columns = ['A','B','C'],
index = ['r0', 'r1', 'r2', 'r3', 'r4')
A B C
r0 -0.830305 -0.395235 0.589917
r1 -1.378534 -0.484204 -1.068907
r2 -0.407720 1.922942 -1.120012
r3 1.075495 0.968913 1.509079
r4 -2.858858 1.018327 -0.660672
我想得到一个新的数据框,其中,对于每一行,我有按值排序的列名列表
对于上述示例,按列按降序排序的结果为:
0 1 2
r0 C B A
r1 A B C
r2 B A C
r3 C A B
r4 B C A
有没有“熊猫/裸体”的方法可以做到这一点 一种方法是对每行使用Series方法(并获取索引):
要分解它:
In [21]: row = df.ix[0]
In [22]: row
Out[22]:
A 0.213505
B -0.661328
C 1.489605
Name: r0
In [23]: row.order(ascending=False)
Out[23]:
C 1.489605
A 0.213505
B -0.661328
Name: r0
In [24]: row.order(ascending=False).index
Out[24]: Index([C, A, B], dtype=object)
我想我比我更喜欢这个。
在[12]
中返回以下内容:/opt/Python-2.7.3-x86_64/lib/python2.7/site packages/pandas-0.10.1-py2.7-linux-x86_64.egg/pandas/core/frame.py:3576:FutureWarning with-In-place=True将从pandas 0.11开始“从pandas 0.11开始”不返回任何值,未来警告)
这是什么意思?您编写的代码是否与0.11
以后的版本兼容?@user815423426它在0.11版本上工作(没有警告)。至于您为什么会看到它:好问题(因为我们不调用重命名)。。。当使用inplace=True调用许多函数时,它们将返回None(而不是输出)。因为我们没有使用inplace=True,所以这里没有问题。
In [21]: row = df.ix[0]
In [22]: row
Out[22]:
A 0.213505
B -0.661328
C 1.489605
Name: r0
In [23]: row.order(ascending=False)
Out[23]:
C 1.489605
A 0.213505
B -0.661328
Name: r0
In [24]: row.order(ascending=False).index
Out[24]: Index([C, A, B], dtype=object)