【问题标题】:python pandas - transform custom aggregationpython pandas - 转换自定义聚合
【发布时间】:2020-04-28 16:51:03
【问题描述】:

拥有以下数据框,涵盖 2 天内的用户活动:

    user    score
0   A   10
1   A   0
2   B   5

我想计算当时的平均用户得分并将结果转换为所有行:

import pandas as pd

df = pd.DataFrame({'user' : ['A','A','B'],
                   'score': [10,0,5]})

df["avg"] = df.groupby(['user']).transform("sum")["score"]
df.head()

这可以让我了解每个用户:

    user    score   avg
0   A         10    10
1   A          0    10
2   B          5    5

现在我想将每个分数除以天数 (2) 得到:

    user    score   avg
0   A         10    5
1   A          0    5
2   B          5    2.5

这可以在我计算总和的同一行上完成吗?

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    您可以将输出Series 除以2

    df = pd.DataFrame({'user' : ['A','A','B'],
                       'score': [10,0,5]})
    
    df["avg"] = df.groupby(['user']).transform("sum")["score"] / 2
    
    print (df)
      user  score  avg
    0    A     10  5.0
    1    A      0  5.0
    2    B      5  2.5
    

    【讨论】:

      【解决方案2】:

      在这里你可以做类似的事情

      
      df["avg"] = df.groupby(['user']).transform("sum")["score"]/2                                                                                                                                     
      
      In [54]: df.head()                                                                                                                                                                                        
      Out[54]: 
        user  score  avg
      0    A     10  5.0
      1    A      0  5.0
      2    B      5  2.5
      
      

      【讨论】:

        猜你喜欢
        • 2021-04-26
        • 2019-11-05
        • 2015-07-04
        • 2017-08-04
        • 1970-01-01
        • 2017-04-18
        相关资源
        最近更新 更多