【发布时间】:2016-08-03 21:18:51
【问题描述】:
我想确定数据框中连续的日期,即存在直接的前任或后继。然后,我想在新列中标记哪些日期是连续的,哪些不是连续的。此外,我想在我的数据的特定子集中执行此操作。
首先,我创建一个新变量,我将在其中连续几天识别真假。
weatherFile['CONSECUTIVE_DAY'] = 'NA'
我已将日期转换为日期时间对象,然后转换为序数对象:
weatherFile['DATE_OBJ'] = [datetime.strptime(d, '%Y%m%d') for d in weatherFile['DATE']]
weatherFile['DATE_INT'] = list([d.toordinal() for d in weatherFile['DATE_OBJ']])
现在我想确定以下组中的连续日期:
weatherFile.groupby(['COUNTY_GEOID_YEAR', 'TEMPBIN'])
我正在考虑循环遍历这些组并应用一个操作来识别在唯一县的 tempbin 子集中哪些天是连续的,哪些不是连续的。
我对编程和 python 还很陌生,到目前为止,这是一个好方法吗?如果是,我该如何进步?
谢谢 - 如果我应该提供更多信息,请告诉我。
更新:
使用@karakfa 的建议,我尝试了以下方法:
weatherFile.groupby(['COUNTY_GEOID_YEAR', 'TEMPBIN'])
weatherFile['DISTANCE'] = weatherFile[1:, 'DATE_INT'] - weatherFile[:-1,'DATE_INT']
weatherFile['CONSECUTIVE?'] = np.logical_or(np.insert((weatherFile['DISTANCE']),0,0) == 1, np.append((weatherFile['DISTANCE']),0) == 1)
这会导致 TypeError: unhashable type。 Traceback 发生在第二行。 weatherFile['DATE_INT'] 是 dtype:int64。
【问题讨论】: