如何查看一个值是否在 pandas 的 1 列中有 2 个匹配项
How to see if one value have 2 matches in 1 column in pandas
我有 A/B 测试的结果需要评估,但在检查数据时我注意到两个控制组中都有用户,我需要删除他们以免影响测试.我的数据看起来像这样:
transactionId visitorId date revenue group
0 906125958 0 2019-08-16 10.8 B
1 1832336629 1 2019-08-04 25.9 B
2 3698129301 2 2019-08-01 165.7 B
3 4214855558 2 2019-08-07 30.5 A
4 797272108 3 2019-08-23 100.4 A
我需要做的是删除 A 组和 B 组中的所有用户,同时保留其余用户。所以从示例数据我需要这个输出:
transactionId visitorId date revenue group
0 906125958 0 2019-08-16 10.8 B
1 1832336629 1 2019-08-04 25.9 B
4 797272108 3 2019-08-23 100.4 A
我尝试了多种方式,但我似乎无法弄清楚,我在任何地方都找不到答案我真的很感激这里的一些帮助,
提前致谢
您可以像这样获取一个组中的用户列表:
group_counts = df.groupby('visitorId').agg({'group': 'nunique'}) ##list of users with number of groups
to_include = group_counts[group_counts['group'] == 1] ##filter for just users in 1 group
然后根据该列表中的访问者过滤您的原始数据:
df = df[df['visitorId'].isin(to_include.index)]
我有 A/B 测试的结果需要评估,但在检查数据时我注意到两个控制组中都有用户,我需要删除他们以免影响测试.我的数据看起来像这样:
transactionId visitorId date revenue group
0 906125958 0 2019-08-16 10.8 B
1 1832336629 1 2019-08-04 25.9 B
2 3698129301 2 2019-08-01 165.7 B
3 4214855558 2 2019-08-07 30.5 A
4 797272108 3 2019-08-23 100.4 A
我需要做的是删除 A 组和 B 组中的所有用户,同时保留其余用户。所以从示例数据我需要这个输出:
transactionId visitorId date revenue group
0 906125958 0 2019-08-16 10.8 B
1 1832336629 1 2019-08-04 25.9 B
4 797272108 3 2019-08-23 100.4 A
我尝试了多种方式,但我似乎无法弄清楚,我在任何地方都找不到答案我真的很感激这里的一些帮助, 提前致谢
您可以像这样获取一个组中的用户列表:
group_counts = df.groupby('visitorId').agg({'group': 'nunique'}) ##list of users with number of groups
to_include = group_counts[group_counts['group'] == 1] ##filter for just users in 1 group
然后根据该列表中的访问者过滤您的原始数据:
df = df[df['visitorId'].isin(to_include.index)]