pandas - 在 DataFrame 'ValueError: Lengths must match to compare' 中选择两个日期之间的数据
问题描述
我想选择我的大 2 个日期之间的所有值df_data
。当我在循环之外为一天的数据执行此操作时,这很有效:
df_data['datetime'] = pd.to_datetime(df_data['TimeStamp'] )
twelveearlier = datetime.datetime(2017, 12,23, 00,00, 00)
twelvelater = datetime.datetime(2017, 12, 24, 00, 00, 00)
df = df_data[(df_data['datetime']>= twelveearlier) &
(df_data['datetime']< twelvelater)]
但是,当我尝试通过遍历下面的日期列表来执行此操作时,我得到ValueError: Lengths must match to compare
.
event_name_list = ['noEvent_20161208174900', 'NoEvent_20161209174200', 'NoEvent20161211_061400']
for event in event_name_list:
event_time = re.findall(r'\d+', event)
event_timestamp = pd.to_datetime(event_time)
twelvelater = event_timestamp + datetime.timedelta(hours=12)
twelveearlier = event_timestamp - datetime.timedelta(hours=12)
df = df_data[(df_data['datetime']>= twelveearlier.values) &
(df_data['datetime']< twelvelater.values)]
我认为这是因为由于使用而在循环版本中十二之前和十二之后是不同的类型,但使用event_timestamp - datetime.timedelta(hours=12)
转换它们等并没有帮助。如何获得与datetime相同的格式,以便仅基于和之间的日期进行创建?to_datetime
to_pydatetime
twelveearlier
twelvelater
df_data[
]
df
twelveearlier
twelvelater
df_data['datetime']
3250592 2017-12-31 23:40:00
3250593 2017-12-31 23:50:00
Name: datetime, dtype: datetime64[ns]
print event_timestamp
DatetimeIndex(['2016-12-16 06:22:29'], dtype='datetime64[ns]', freq=None)
print twelveearlier
DatetimeIndex(['2016-12-08 05:49:00'], dtype='datetime64[ns]', freq=None)
print twelvelater
DatetimeIndex(['2016-12-09 05:49:00'], dtype='datetime64[ns]', freq=None)
解决方案
您正在尝试将日期时间与长度为 1 的日期时间的 DatetimeIndex 进行比较。这是因为re.findall
返回它找到的所有匹配项的列表。试试这个:
event_name_list = pd.to_datetime([re.findall(r'\d+', x)[0] for x in event_name_list])
for event_timestamp in event_name_list:
twelvelater = event_timestamp + datetime.timedelta(hours=12)
twelveearlier = event_timestamp - datetime.timedelta(hours=12)
df = df_data[(df_data['datetime']>= twelveearlier) &
(df_data['datetime']< twelvelater)]
推荐阅读
- visual-c++ - 如何将 OCX 绘制到 CBitmap (MFC, c++)
- go - Go 同步和并发模型
- javascript - 试图在 ajax 之外访问 dataTable 变量是未定义的
- google-apps-script - 如何减少 Google App 脚本服务调用
- c# - 如何从 http 触发 azure 函数运行 .cmd 文件
- objection.js - 如何更新 Objection JS 中的多对多关系?
- git - 如何签出 Github 克隆后添加的分支?
- django - 如何在保存时使用 id 填充字段但 id 尚不存在
- google-cloud-build - Google Cloud Build - Github 触发器 - 过滤文件不起作用
- python - 如何在 Jupyter 笔记本中自动重新加载由加载魔法加载的代码?