Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用两个条件选择特定值时出现KeyError_Python_Pandas_Conditional Statements - Fatal编程技术网

Python 使用两个条件选择特定值时出现KeyError

Python 使用两个条件选择特定值时出现KeyError,python,pandas,conditional-statements,Python,Pandas,Conditional Statements,我的数据库里有不同的植物在不同的日子和时间的数据,还有一些对它们进行的计算。 我想创建“迷你”数据集,当每个数据集包含关于不同日期和数据的数据时。 例如: 数据集1:所有植物,日期:17/6,12:00,处理,生产线,NDVI 我已经尝试使用代码来实现这一点 df_07=df_indices[(df_indices['date']=='6/17/2019') & (df_indices['Hour'] > '12:00')] 但我一直有一个错误: KeyError:“日期” 我

我的数据库里有不同的植物在不同的日子和时间的数据,还有一些对它们进行的计算。 我想创建“迷你”数据集,当每个数据集包含关于不同日期和数据的数据时。 例如: 数据集1:所有植物,日期:17/6,12:00,处理,生产线,NDVI

我已经尝试使用代码来实现这一点

df_07=df_indices[(df_indices['date']=='6/17/2019') & (df_indices['Hour'] > '12:00')]
但我一直有一个错误:

KeyError:“日期”

我不知道为什么它不能识别日期,因为你可以在图像中看到,它有一列日期。因为我使用“日期”作为索引,这会发生吗

我的最终目标是为所有工厂创建只有一个日期和一个小时的新表格。使用:

对于第二个掩码,通过将值转换为时间增量,并与进行比较:

更好的解决方案是将
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


date
列似乎实际上是索引的一部分。@CDJB为什么?它看起来像是在柱子的顶部,线的上方。你能解释一下吗?我和以前一样有错误,它忽略了“12:00”,只考虑第一个条件,尽管我们有和你的答案,但首先它有无效语法,其次,如果你能说几句话,因为我想了解什么是你的。idea@Reut-第一个
m2
用remove
.dt
修改,最后一个
仍然修改语法是无效的,我想更多地了解你的想法,我不知道为什么我们需要2个变量来that@Reut-这是针对
m2
:)的两种备选解决方案
m2 = pd.to_timedelta(df_indices.index.get_level_values('Hour')+':00') > pd.Timedelta(12, 'h')

df_07=df_indices[m1 & m2]
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