在R中,我可以使用dplyr::arrange
按临时变量对数据框进行排序。例如,使用flights
包中的NYC nycflights13
数据集,我可以通过从distance
和air_time
列计算此值来按速度排序:
library(nycflights13)
arrange(flights, distance / air_time)
是否可以通过Pandas实现此目的(无需显式创建新列,按该列排序,然后再次删除此列)?
答案 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