输入:
根据问题的样本数据
import numpy as np
import pandas as pd
data = {'year': [*np.repeat(2012, 9), 2018],
'month': [*np.repeat(1, 4), *np.repeat(2, 3), *np.repeat(3, 2), 12],
'day': [1, 2, 3, 31, 1, 2, 28, 1, 2, 31],
'Temp max': [28, 26, 27, 26, 27, 26, 26, 26, 25, 26],
'Temp min': [19, 18, 17, 19, 18, 18, 18, 18, 18, 28]}
df = pd.DataFrame(data)
输出:结果数据帧
year month day Temp max Temp min
0 2012 1 1 28 19
1 2012 1 2 26 18
2 2012 1 3 7 17
3 2012 1 31 26 19
4 2012 2 1 27 18
5 2012 2 2 26 18
6 2012 2 28 26 18
7 2012 3 1 26 18
8 2012 3 2 25 18
9 2018 12 31 26 28
输入:创建数据透视表,计算“Temp max”列的最大值和“Temp min”列的最小值
pivot = pd.pivot_table(data=df,
values=['Temp max', 'Temp min'],
index=['year', 'month'])
pivot.columns = ['Monthly Temp max', 'Monthly Temp min']
输出:结果数据帧
Monthly Temp max Monthly Temp min
year month
2012 1 26.75 18.25
2 26.33 18.00
3 25.50 18.00
2018 12 26.00 28.00
或者:使用 pandas 的 groupby 方法
grouped = (df
.groupby(['year', 'month'])['Temp max', 'Temp min']
.mean())
grouped.columns = ['Monthly Temp max', 'Monthly Temp min']
输出:结果数据帧
Monthly Temp max Monthly Temp min
year month
2012 1 26.75 18.25
2 26.33 18.00
3 25.50 18.00
2018 12 26.00 28.00