1,业务需求
计算每个月的最高温度、最低温度、出现的风向列表
import pandas as pd
2,数据读取
#数据输入以及应用的相关知识点实现
df = pd.read_excel('./tianqi.xlsx')
df.head()
#数据格式转化
df['bWendu']=df['bWendu'].str.replace('℃','').astype('int32')
df['yWendu']=df['yWendu'].str.replace('℃','').astype('int32')
#日期列解析,便于提取月份
df['ymd']=pd.to_datetime(df['ymd'])
df['ymd'].dt.month
#series对象 可以用series.unique()进行去重
df['fengxiang'].unique()
#','.join(series)将实现组合成长字符出串
','.join(df['fengxiang'].unique())
3,方法
# 方法1
result=(df.groupby(df['ymd'].dt.month)
.agg(#新列名称 = (旧列名称,函数)
最高温度 = ('bWendu',max),
最低温度 = ('yWendu',min),
风向列表 = ('fengxiang',lambda x : ','.join(x.unique())) )
.reset_index()
.rename(columns={'ymd':'月份'})
)
#方法2
def agg_func(x):
#这个x是每个分组后的dataframe
return pd.Series({
"最高温度": x['bWendu'].max(),
"最低温度": x['yWendu'].min(),
"风向列表": ','.join(x['fengxiang'].unique())
})
result = df \
.groupby(df['ymd'].dt.month)\
.apply(agg_func)\
.reset_index()\
.rename(columns={'ymd':'月份'})
最后输出的result