Python 如何对timeseries数据中的索引进行分组?

Python 如何对timeseries数据中的索引进行分组?,python,dataframe,matplotlib,time-series,Python,Dataframe,Matplotlib,Time Series,初学者编码器在这里 我试图得到每年的平均数据。重采样似乎不起作用,有什么问题 data=pd.read_csv('Water well.csv', parse_dates=["datetime"],index_col="datetime")` KeyError:“找不到grouper名称datetime” 数据来自此处如果要按索引列分组,则无需为参数“开”提供值。 熊猫文件中提到了重采样方法: 在str上,可选 对于数据帧,使用列代替索引进行重采样。

初学者编码器在这里

我试图得到每年的平均数据。重采样似乎不起作用,有什么问题

data=pd.read_csv('Water well.csv', parse_dates=["datetime"],index_col="datetime")`

KeyError:“找不到grouper名称datetime”


数据来自此处

如果要按索引列分组,则无需为参数“开”提供值。 熊猫文件中提到了重采样方法:

在str上,可选 对于数据帧,使用列代替索引进行重采样。列必须与datetime类似

()

以下工作将起作用:

data1=data.resample('1y').mean().reset_index()

但是,您应该考虑在分组结果中需要哪些列。 如果数据框包含非数字列,则可能会得到意外结果

使用reset_index()的目的是什么?在您的情况下,它会将DateTimeIndex和frequency更改为整数的RangeIndex

没有重置索引():

使用reset_index():


如果要按索引列分组,则不需要为参数“on”提供值。 熊猫文件中提到了重采样方法:

在str上,可选 对于数据帧,使用列代替索引进行重采样。列必须与datetime类似

()

以下工作将起作用:

data1=data.resample('1y').mean().reset_index()

但是,您应该考虑在分组结果中需要哪些列。 如果数据框包含非数字列,则可能会得到意外结果

使用reset_index()的目的是什么?在您的情况下,它会将DateTimeIndex和frequency更改为整数的RangeIndex

没有重置索引():

使用reset_index():


谢谢大家!@谢谢你@尼安
>>> data2=data['water_level(ft below land surface)'].resample('1y').mean()
>>> data2.index
DatetimeIndex(['2016-12-31', '2017-12-31', '2018-12-31', '2019-12-31',
               '2020-12-31', '2021-12-31'],
              dtype='datetime64[ns]', name='datetime', freq='A-DEC')
>>> data2
datetime
2016-12-31    28.082380
2017-12-31    28.553674
2018-12-31    27.897536
2019-12-31    26.807835
2020-12-31    27.973135
2021-12-31    27.331749
>>> data3=data['water_level(ft below land surface)'].resample('1y').mean().reset_index()
>>> data3.index
RangeIndex(start=0, stop=6, step=1)
>>> data3
    datetime  water_level(ft below land surface)
0 2016-12-31                           28.082380
1 2017-12-31                           28.553674
2 2018-12-31                           27.897536
3 2019-12-31                           26.807835
4 2020-12-31                           27.973135
5 2021-12-31                           27.331749