将一年中特定时间段的数据更改为零

时间:2019-10-24 19:57:24

标签: python pandas

我每隔5秒就有一次太阳能性能数据,该数据跨度为一年。问题在于数据反映了晚上的性能。我想将这些值全部更改为零。

我尝试使用:

data.between_time('00:00:00','06:11:00')['SYSTEM MPPT PV Power [W]']) = 0

data.between_time('17:00:00','23:59:55')['SYSTEM MPPT PV Power [W]']) = 0

data.at_time('00:00:00')['SYSTEM MPPT PV Power [W]']) = 0

看到这些时期应该没有表现。

但是,这不允许我对反映性能的列进行分配。

有什么办法吗?

1 个答案:

答案 0 :(得分:0)

pandas.DataFrame.between_times返回时间之间的行(假设数据框具有datetimeindex),则不选择它们。因此赋值运算符不起作用。

假设您的数据框具有一个datetimeindex(由于您正在使用between_times,所以它应该具有),则可以使用between_times查找要为其设置0的索引,然后在下面的行中进行分配:

zeroidx = data.between_time('00:00:00','06:11:00').index.\
         append([data.between_time('17:00:00','23:59:55').index, \
         data.at_time('00:00:00').index])

data.loc[zeroidx, 'SYSTEM MPPT PV Power [W]'] = 0