5 天气数据-group by聚合后字符串列的合并

2020-08-08  本文已影响0人  avyhlj

1,业务需求
计算每个月的最高温度、最低温度、出现的风向列表

import pandas as pd 

2,数据读取

#数据输入以及应用的相关知识点实现
df = pd.read_excel('./tianqi.xlsx')
df.head()
1.png
#数据格式转化
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


2.png
上一篇 下一篇

猜你喜欢

热点阅读