【发布时间】:2017-03-03 08:50:08
【问题描述】:
我从字符串中提取日期和时间,并通过 wrintig 将它们转换为 Pandas DatFrame:
df = pd.to_datetime(news_date, format='%m/%d/%Y')
输出如下:
['1997-10-31 18:00:00', '1997-10-31 18:00:00',
'1997-10-31 18:00:00', '1997-10-31 18:00:00',
'1997-10-31 18:00:00', '1997-10-31 18:00:00',
'1997-10-31 18:00:00', '1997-10-31 18:00:00',
'1997-10-31 18:00:00', '1997-10-31 18:00:00',
...
'2016-12-07 03:14:00', '2016-12-09 16:31:00',
'2016-12-10 19:02:00', '2016-12-11 09:41:00',
'2016-12-12 05:01:00', '2016-12-12 05:39:00',
'2016-12-12 06:44:00', '2016-12-12 08:11:00',
'2016-12-12 09:36:00', '2016-12-12 10:19:00']
然后我想只保留月份和年份并对日期进行排序,我写道:
month_year = df.to_series().apply(lambda x: dt.datetime.strftime(x, '%m-%Y')).tolist() # remove time and day
new = sorted(month_year, key=lambda x: datetime.datetime.strptime(x, '%m-%Y')) # sort date
到目前为止,我有一个日期列表。当我尝试计算它们的频率时会出现问题(稍后我必须绘制时间分布)。 我的代码是:
print(pd.DataFrame(new).groupby(month_year).count())
输出是:
01-1998 60
01-1999 18
01-2000 49
01-2001 50
01-2002 87
01-2003 129
01-2004 125
01-2005 225
01-2006 154
01-2007 302
01-2008 161
01-2009 161
01-2010 167
01-2011 181
01-2012 227
... ...
12-2014 82
12-2015 89
12-2016 13
尽管如此,我希望在一列中有一个排序的日期,并在另一列(例如 Pandas DataFrame)中有一个可以轻松绘制的频率,例如:
01-1998 60
02-1998 32
03-1998 22
... ...
11-2016 20
12-2016 13
【问题讨论】:
标签: python list pandas datetime frequency-distribution