熊猫,如何按日期重新排序

时间:2016-11-15 13:06:20

标签: python pandas

我有一个Pandas数据框,它有两列,如下所示:

    title      date
   Event0     2016-01-03
   Event1     2016-02-28
   Event2     2016-06-19
   Event3     2016-04-17
   Event4     2015-11-12

等...

我想按日期按降序对事件进行重新排序,然后创建结果的python字典。因此,我希望我的python字典的键(字符串),值(日期时间)对看起来像:

result_dictionary = { 
    'Event2': 2016-06-19, 
    'Event3': 2016-04-17, 
    'Event1': 2016-02-28,  
    'Event0': 2016-01-03,  
    'Event4': 2015-11-12
}

最有效的方法是什么?

感谢您

2 个答案:

答案 0 :(得分:3)

您需要OrderedDict,因为您无法对字典进行排序,因为dictionary没有排序:

from collections import OrderedDict

d = df.set_index('title').date.to_dict()
print (d)
{'Event1': '2016-02-28', 
 'Event4': '2015-11-12', 
 'Event0': '2016-01-03', 
 'Event3': '2016-04-17', 
 'Event2': '2016-06-19'}


od = OrderedDict(sorted(d.items(), key=lambda x:x[1], reverse=True))
print (od)
OrderedDict([('Event2', '2016-06-19'), 
             ('Event3', '2016-04-17'), 
             ('Event1', '2016-02-28'), 
             ('Event0', '2016-01-03'), 
             ('Event4', '2015-11-12')])
d = df.set_index('title').date.sort_values(ascending=False).to_dict()
print (d)
{'Event0': '2016-01-03', 
 'Event4': '2015-11-12', 
 'Event1': '2016-02-28',
 'Event3': '2016-04-17',
 'Event2': '2016-06-19'}

答案 1 :(得分:1)

试试这个

dataframe.sort_values(by = 'date', ascending = False, inplace = True)
dataframe.to_dict()

docs http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_dict.html