Python 如何匹配datetime[ns]和datetime[D]
我使用pandas来读取日期列表,范围从1982年到2015年,仅包括工作日,类型为datetime[ns]。我想把大名单分成小名单,一年一组。我所做的是:Python 如何匹配datetime[ns]和datetime[D],python,datetime,pandas,unicode,Python,Datetime,Pandas,Unicode,我使用pandas来读取日期列表,范围从1982年到2015年,仅包括工作日,类型为datetime[ns]。我想把大名单分成小名单,一年一组。我所做的是: list_Date = [] list_Close = [] for i in range(1982,2016): dateONEyear = [] CloseOneyear = [] date = np.arange(str(i),str(i+1),dtype='datetime64[D]') for ii
list_Date = []
list_Close = []
for i in range(1982,2016):
dateONEyear = []
CloseOneyear = []
date = np.arange(str(i),str(i+1),dtype='datetime64[D]')
for ii,jj in zip(AAPL['Date'],AAPL['Close']):
if str(ii) in date:
dateBYyear.append(ii)
CloseOneyear.append(jj)
list_Date.append(dateONEyear)
list_Close.append(CloseOneyear)
但它不起作用。我的问题是:
1) 如何匹配这两种不同的数据类型
2) 或者,有谁有更好的办法按一年的单位对数据进行分组
3) 我可以使用其他方法读取日期列表,但类型是unicode,如何将unicode与datetime64匹配 您可以使用列表和词典理解来生成一本键入年度的词典
dates = pd.date_range('1982-1-1', '2016-1-28', freq='B')
date_dict = {yr: [d for d in dates if d.year == yr]
for yr in range(dates[0].year, dates[-1].year + 1)}
>>> dates_dict[2016]
[Timestamp('2016-01-01 00:00:00', offset='B'),
Timestamp('2016-01-04 00:00:00', offset='B'),
Timestamp('2016-01-05 00:00:00', offset='B'),
Timestamp('2016-01-06 00:00:00', offset='B'),
Timestamp('2016-01-07 00:00:00', offset='B'),
Timestamp('2016-01-08 00:00:00', offset='B'),
Timestamp('2016-01-11 00:00:00', offset='B'),
Timestamp('2016-01-12 00:00:00', offset='B'),
Timestamp('2016-01-13 00:00:00', offset='B'),
Timestamp('2016-01-14 00:00:00', offset='B'),
Timestamp('2016-01-15 00:00:00', offset='B'),
Timestamp('2016-01-18 00:00:00', offset='B'),
Timestamp('2016-01-19 00:00:00', offset='B'),
Timestamp('2016-01-20 00:00:00', offset='B'),
Timestamp('2016-01-21 00:00:00', offset='B'),
Timestamp('2016-01-22 00:00:00', offset='B'),
Timestamp('2016-01-25 00:00:00', offset='B'),
Timestamp('2016-01-26 00:00:00', offset='B'),
Timestamp('2016-01-27 00:00:00', offset='B'),
Timestamp('2016-01-28 00:00:00', offset='B')]
非常感谢你。这很有启发性。但是我想用这样的格式记录日期。1982-01-11 1982-01-08 1982-01-07 1982-01-06 1982-01-05 1982-01-04,数据类型:datetime64[ns]。节假日也不包括在内。因为我想使用数据和价格来绘制一些图。为了清楚起见,您希望结果是格式化文本(不再是时间戳)?如果是这样,就这样做:`{yr:[d.strftime(“%Y-%m-%d”)for…`对不起,我仍然希望日期是dtype:datetime64。你知道怎么做吗?
[d.to_datetime64()for d in dates…]
?结果是numpy.datetime64类型。非常感谢。我想在你的帮助下,我现在可以解决这个问题了。