需求:
计算每个月的最高温度、最低温度、出现的风向列表、出现的空气质量列表
一、数据准备
import pandas as pd
df = pd.read_csv(r"D:\node\nd\Pandas_study\pandas_test\beijing_tianqi_2018.csv")
print(df.head())
df_type = df.info()
# print("df_type","\n",df_type)
df["bWendu"] = df["bWendu"].str.replace("℃", "").astype('int32')
df["yWendu"] = df["yWendu"].str.replace("℃", "").astype('int32')
print("df","\n",df.head())
方法一
#进行日期列解析,可以方便提取月份
df["ymd"] = pd.to_datetime(df["ymd"])
result = (
df.groupby(df["ymd"].dt.month)
.agg(
# 新列名 = (原列名,函数)
最高温度=("bWendu", "max"),
最低温度=("yWendu", "min"),
风向列表=("fengxiang", lambda x : ",".join(x.unique())),
空气质量列表=("aqiInfo", lambda x : ",".join(x.unique()))
)
.reset_index()
.rename(columns={"ymd":"月份"})
)
print(result)
def agg_func(x):
"""注意,这个x是每个分组的dataframe"""
return pd.Series({
"最高温度": x["bWendu"].max(),
"最低温度": x["yWendu"].min(),
"风向列表": ",".join(x["fengxiang"].unique()),
"空气质量列表": ",".join(x["aqiInfo"].unique())
})
result = df \
.groupby(df["ymd"].dt.month) \
.apply(agg_func) \
.reset_index() \
.rename(columns={"ymd":"月份"})
print(result)