将时间范围内的值设置为零

Setting values in a time frame to zero

我有一个 df DateTimeIndex(每小时读数)和光照强度。

Time                   Light
1/2/2017 18:00          31     
1/2/2017 19:00          -5     
1/2/2017 20:00          NA
......
......
2/2/2017 05:00          NA
2/2/2017 06:00          20

问题是在日落(下午 6 点)到日出(早上 6 点)之后,传感器不工作并且读数不正确。我想将这段时间的任何读数设置为0。

您可以根据这些条件创建掩码并根据它设置值。

hours = (df.index.to_series().dt.hour) # convert DateTimeIndex to hours
mask = (hours > 6)  & (hours < 18)
df.loc[~mask, 'Light'] = 0

您应该将 DataTimeIndex 转换为 Series 以访问日期时间方法。