python - 选择具有两个条件的特定值时出现 KeyError
问题描述
我的数据库有关于不同日期和不同时间的不同植物的数据,以及对它们进行的一些计算。我想创建“迷你”数据集,当每个数据集将包含有关不同日期和数据的数据时。例如:数据集 1:所有植物,日期:17/6,小时 12:00,处理,线,NDVI .....
我尝试使用代码来做到这一点
df_07=df_indices[(df_indices['date']=='6/17/2019') & (df_indices['Hour'] > '12:00')]
但我不断得到KeyError:
键错误:“日期”
我不知道为什么它不能识别日期,因为正如您在图像中看到的那样,它具有列日期。会因为我使用“日期”作为索引而发生吗?
我的最终目标是为所有植物创建一个只有一个日期和一小时的新表格。
解决方案
m1 = (df_indices.index.get_level_values('date')=='6/17/2019')
对于第二个掩码,将值转换为 timedeltasto_timedelta
并与 进行比较Timedelta
:
m2 = pd.to_timedelta(df_indices.index.get_level_values('Hour')+':00') > pd.Timedelta(12, 'h')
df_07=df_indices[m1 & m2]
更好的解决方案是加入date
级别hour
,因此可以通过datetime
s 进行比较:
样本数据:
df_indices = pd.DataFrame({'date':['6/17/2019','6/17/2019'],
'Hour':['15:00','10:00'],
'col':[4,5]}).set_index(['date','Hour'])
print (df_indices)
col
date Hour
6/17/2019 15:00 4
10:00 5
dates = pd.to_datetime(df_indices.index.get_level_values('date') + ' ' +
df_indices.index.get_level_values('Hour'))
print (dates)
DatetimeIndex(['2019-06-17 15:00:00', '2019-06-17 10:00:00'],
dtype='datetime64[ns]', freq=None)
df_07=df_indices[dates > '2019-06-17 12:00:00']
print (df_07)
col
date Hour
6/17/2019 15:00 4
推荐阅读
- python - 将一系列字符串连接成 Pandas Dataframe 列中的单个字符串(对于每一行)?
- excel - VBA Excel InStr(myString) 不返回结果
- java - Android/java App:将数据从一个活动传递到另一个正在运行的活动
- r - LM 估计中 gggmisc 和 broom 包之间的差异
- bash - 从 YAML 脚本中的 Azure 密钥保管库获取机密值
- python - 用 pandas 分块读取 txt 文件
- go - Gorilla Websocket 示例在处理另一个通道时尝试将数据发送到通道时挂起?
- mysql - 在编写查询时需要帮助
- react-native - 同一计划的多个订阅
- reactjs - 有没有办法告诉 WebdriverIO 等待反应应用程序中的后台任务