一种方法是使用pandas
库和参数ascending
,通过设置你想要升序排列的列以及你想要降序排列的列来进行排序,例如:ascending=[True,False,False]
你不仅可以对两个级别(例如datetime
和str
)进行排序,还可以对所需的任意数量级别进行排序。
例如,如果你有以下数据:
d = [[1, 2, datetime(2017,1,2)],
[2, 2, datetime(2017,1,4)],
[2, 3, datetime(2017,1,3)],
[2, 3, datetime(2017,1,4)],
[2, 3, datetime(2017,1,5)],
[2, 4, datetime(2017,1,1)],
[3, 1, datetime(2017,1,2)]]
您可以设置您的
df
。
df = pd.DataFrame(d)
并使用 sort_values
sorted_df = df.sort_values(by=[0,1,2], ascending=[True,False,False])
sorted_list = sorted_df.agg(list, 1).tolist()
[[1, 2, Timestamp('2017-01-02 00:00:00')],
[2, 4, Timestamp('2017-01-01 00:00:00')],
[2, 3, Timestamp('2017-01-05 00:00:00')],
[2, 3, Timestamp('2017-01-04 00:00:00')],
[2, 3, Timestamp('2017-01-03 00:00:00')],
[2, 2, Timestamp('2017-01-04 00:00:00')],
[3, 1, Timestamp('2017-01-02 00:00:00')]]
请注意,第一列按升序排列,而第二列和第三列按降序排列,这当然是由于设置了
ascending=[True,False,False]
的缘故。