美文网首页
5 天气数据-group by聚合后字符串列的合并

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

作者: avyhlj | 来源:发表于2020-08-08 19:56 被阅读0次

    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

    相关文章

      网友评论

          本文标题:5 天气数据-group by聚合后字符串列的合并

          本文链接:https://www.haomeiwen.com/subject/btzhdktx.html