熊猫:如何按列和索引对数据框进行排序

大卫·M

给定DataFrame:

import pandas as pd
df = pd.DataFrame([6, 4, 2, 4, 5], index=[2, 6, 3, 4, 5], columns=['A'])

结果是:

   A
2  6
6  4
3  2
4  4
5  5

现在,我想按列A和索引的值进行排序。

例如

df.sort_values(by='A')

退货

   A
3  2
6  4
4  4
5  5
2  6

我想

   A
3  2
4  4
6  4
5  5
2  6

如何在列上首先排序,然后在索引上排序?

学生

使用lexsortnumpy可能是另一种方式,并且速度也稍慢一些:

df.iloc[np.lexsort((df.index, df.A.values))] # Sort by A.values, then by index

结果:

   A
3  2
4  4
6  4
5  5
2  6

timeit

%%timeit
df.iloc[np.lexsort((df.index, df.A.values))] # Sort by A.values, then by index

结果:

1000 loops, best of 3: 278 µs per loop

使用重置索引并再次设置索引:

 %%timeit
df.reset_index().sort_values(by=['A','index']).set_index('index')

结果:

100 loops, best of 3: 2.09 ms per loop

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章