我有一个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
}
最有效的方法是什么?
感谢您
答案 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