一种方法是使用pandas
library 和 args 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]
。