import pandas as pd
df = pd.DataFrame({'Month': [2, 2, 3, 3],
'user': ['Michael', 'Michael', 'Lea', 'Michael']})
我有一个这样的数据框架,它已经是一个按月份分组的结果
Month user
0 2 Michael
1 2 Michael
2 3 Lea
3 3 Michael
我想要的是统计与前一个月相比的唯一用户总数和新的唯一用户数
总计没有问题,只需使用:
df.groupby(['Month'])['user'].nunique()
Month
2 1
3 2
但我想要的只是新的独特的,我不想在第3个月计算时,计算第2个月已经存在的
在我的最小示例中,“Lea”是第3个月的新用户,“Michael”不是因为他已经是第2个月的用户。因此,我的预期结果将是每月新的独立用户数,如下所示
Month Unique_Count_New_Users
0 2 1
1 3 1 <- Lea is new compared to February, Michael isn't
如何在python中实现这一点?我是否需要在组之间进行某种元素方面的比较
因此,我在这里编辑以使其更清楚:如果用户已经在那里,我需要与上个月的所有数据进行比较
import pandas as pd
df = pd.DataFrame({'Month':[2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4],
'user':['Michael', 'Michael', 'Markus', 'Moritz', 'Lea',
'Michael', 'Stefan', 'Dora', 'Erika',
'Dora', 'Markus']})
df
Month user
0 2 Michael
1 2 Michael
2 2 Markus
3 2 Moritz
4 2 Lea
5 3 Michael
6 3 Stefan
7 3 Dora
8 3 Erika
9 4 Dora
10 4 Markus
df.groupby(['Month'])['user'].nunique()
# Solution
# Sort the dataframe first
df.sort_values(by='month', inplace=True)
# Duplicated trick
(~df['user'].duplicated()).groupby(df['Month']).sum()
# Result
Month
2 4
3 3
4 0
IIUC,你可以使用
演示:
我假设
'Month'
列已排序,否则duplicated
技巧将不起作用编辑:您的确切输出可以通过
相关问题 更多 >
编程相关推荐