python - Pandas 分组和计数

标签 python pandas count group-by apply

Pandas 数据框 df 有 3 列:

用户名, session , 收入

我现在想做的是通过唯一的 user_id 对 df 进行分组并派生 2 个新列 - 一个称为 number_sessions(计算与特定 user_id 关联的 session 数)和另一个称为 number_transactions(计算收入列下的行数每个 user_id 的值 > 0)。我该怎么做?

我试过这样做:

df.groupby('user_id')['session', 'revenue'].agg({'number sessions': lambda x: len(x.session), 
'number_transactions': lambda x: len(x[x.revenue>0])})

最佳答案

我认为你可以使用:

df = pd.DataFrame({'user_id':['a','a','s','s','s'],
                   'session':[4,5,4,5,5],
                   'revenue':[-1,0,1,2,1]})

print (df)
   revenue  session user_id
0       -1        4       a
1        0        5       a
2        1        4       s
3        2        5       s
4        1        5       s

a = df.groupby('user_id') \
      .agg({'session': len, 'revenue': lambda x: len(x[x>0])}) \
      .rename(columns={'session':'number sessions','revenue':'number_transactions'})
print (a)
         number sessions  number_transactions
user_id                                      
a                      2                    0
s                      3                    3

a = df.groupby('user_id') \
      .agg({'session':{'number sessions': len}, 
            'revenue':{'number_transactions': lambda x: len(x[x>0])}}) 
a.columns = a.columns.droplevel()

print (a)
         number sessions  number_transactions
user_id                                      
a                      2                    0
s                      3                    3

关于python - Pandas 分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40480744/

相关文章:

python - 在这种情况下,python 中的 MySQLdb 模块是否返回 utf8 编码或 unicode?

python - Pandas:值的矩阵计算

python - 多列的 pandas get_level_values

python - 如何在 pandas 系列字符串上应用切片

javascript - 比较日期并创建计数 javascript

python - 计算列表中对象出现的次数

python - 在 python3.5.2 Windows 10 中安装 Face_recognition 时出错?

python - 如何在极坐标图中正确显示颜色条(半圆的等高线图)?

python - 我可以使用带有字符串连接的 Django F() 对象吗?

postgresql - 将 COUNT 值声明为变量 (PostgreSQL)