【发布时间】:2015-02-05 20:39:35
【问题描述】:
我通常使用value_counts() 来获取某个值的出现次数。但是,我现在处理大型数据库表(无法将其完全加载到 RAM 中)并在 1 个月内查询数据。
有没有办法存储value_counts() 的结果并将其与/添加到下一个结果中?
我想计算用户操作的数量。假设以下结构 用户活动日志:
# month 1
id userId actionType
1 1 a
2 1 c
3 2 a
4 3 a
5 3 b
# month 2
id userId actionType
6 1 b
7 1 b
8 2 a
9 3 c
在这些产品上使用value_counts():
# month 1
userId
1 2
2 1
3 2
# month 2
userId
1 2
2 1
3 1
预期输出:
# month 1+2
userId
1 4
2 2
3 3
到目前为止,我只是找到了一个使用 groupby 和 sum 的方法:
# count users actions and remember them in new column
df1['count'] = df1.groupby(['userId'], sort=False)['id'].transform('count')
# delete not necessary columns
df1 = df1[['userId', 'count']]
# delete not necessary rows
df1 = df1.drop_duplicates(subset=['userId'])
# repeat
df2['count'] = df2.groupby(['userId'], sort=False)['id'].transform('count')
df2 = df2[['userId', 'count']]
df2 = df2.drop_duplicates(subset=['userId'])
# merge and sum up
print pd.concat([df1,df2]).groupby(['userId'], sort=False).sum()
pythonic/pandas 高效合并多个系列(和数据帧)信息的方式是什么?
【问题讨论】: