1

我正在尝试获取时间序列的 rolling.sum。但是,这些行有不同的时间间隔(见下面我的 df_water_level_US1 数据框):

    DATE    TIMEREAD    WATERLEVEL(M)   DateAndTime
0   01/01/2016  0:00:15 0.65    01/01/2016 0:00:15
1   01/01/2016  0:10:14 0.65    01/01/2016 0:10:14
2   01/01/2016  0:20:11 0.64    01/01/2016 0:20:11
3   01/01/2016  0:30:12 0.66    01/01/2016 0:30:12
4   01/01/2016  0:40:12 0.64    01/01/2016 0:40:12

等等。我尝试使用它来获取每天的总和并将其保存到 final_1D:

final_1D = df_water_level_US1.set_index('DateAndTime').rolling('1D').sum()

但我收到此错误:

ValueError: window must be an integer 0 or greater

预期的输出是:

DATETIMEREAD   WATERLEVEL(M) DateAndTime
01/01/2016     3.24         01/01/2016 

等等(2016 年 2 月 1 日、2016 年 3 月 1 日等)

有谁知道如何解决这个问题?

4

2 回答 2

2

尝试:

df_water_level_US1['DateAndTime'] = pd.to_datetime(df_water_level_US1['DateAndTime'])
final_1D = df_water_level_US1.resample('D', on='DateAndTime')['WATERLEVEL(M)'].sum()

print(final_1D.reset_index())

# Output
  DateAndTime  WATERLEVEL(M)
0  2016-01-01           3.24

DateAndTime如果您的列已经是 DatetimeIndex,则第一行不是强制性的。

于 2022-01-13T08:07:46.103 回答
1

对于每日水位总和,请尝试按日期分组:

df.groupby('Date').sum('WATERLEVEL(M)')
于 2022-01-13T08:05:58.780 回答