通过临时变量对Pandas数据框中的值进行排序

时间:2016-11-18 11:49:17

标签: python r pandas dplyr

在R中,我可以使用dplyr::arrange按临时变量对数据框进行排序。例如,使用flights包中的NYC nycflights13数据集,我可以通过从distanceair_time列计算此值来按速度排序:

library(nycflights13)
arrange(flights, distance / air_time)

是否可以通过Pandas实现此目的(无需显式创建新列,按该列排序,然后再次删除此列)?

1 个答案:

答案 0 :(得分:1)

我认为reindex可以使用Series.sort_values进行排序:

df = pd.DataFrame({'A':[1,2,3],
                   'B':[4,5,6],
                   'C':[7,8,9],
                   'D':[1,3,5],
                   'E':[5,3,6],
                   'F':[7,4,3]})

print (df)
   A  B  C  D  E  F
0  1  4  7  1  5  7
1  2  5  8  3  3  4
2  3  6  9  5  6  3

print (df.A / df.D)
0    1.000000
1    0.666667
2    0.600000
dtype: float64

print ((df.A / df.D).sort_values())
2    0.600000
1    0.666667
0    1.000000
dtype: float64

print (df.reindex((df.A / df.D).sort_values().index))
   A  B  C  D  E  F
2  3  6  9  5  6  3
1  2  5  8  3  3  4
0  1  4  7  1  5  7