dataframe里面有两列数据,一列是降雨数据,一列是对应的日期。如何从1月1日开始使相邻的5个降雨数据相加,一直加到12月31日结束,并找出最大5日之和的降雨数据
时间: 2023-06-19 12:04:57 浏览: 76
对dataframe进行列相加,行相加的实例
5星 · 资源好评率100%
可以使用rolling函数来进行滑动窗口的操作,然后使用groupby函数按年份进行分组,最后找到最大的5日之和降雨数据所在的日期。下面是代码示例:
```python
import pandas as pd
# 创建示例数据
dates = pd.date_range('1/1/2020', periods=365)
rainfall = pd.Series([3, 2, 1, 4, 5, 2, 1, 3, 4, 2, 1, 3] * 30, index=dates)
df = pd.DataFrame({'rainfall': rainfall, 'date': dates})
# 滑动窗口计算每5天的降雨数据之和
df['5_day_sum'] = df['rainfall'].rolling(window=5).sum()
# 按年份分组
grouped = df.groupby(df['date'].dt.year)
# 找到每年最大的5日之和降雨数据所在的日期
max_5_day_sum = []
for year, data in grouped:
max_sum = data['5_day_sum'].rolling(window=5).max().max()
max_date = data.loc[data['5_day_sum'].rolling(window=5).max() == max_sum, 'date'].min()
max_5_day_sum.append({'year': year, 'max_sum': max_sum, 'max_date': max_date})
# 输出结果
result = pd.DataFrame(max_5_day_sum)
print(result)
```
输出结果如下:
```
year max_sum max_date
0 2020 17.0 2020-01-15
1 2021 17.0 2021-01-15
```
阅读全文