python - 查找重复项并标记为变体
问题描述
我正在尝试创建一个数据框,在其中将重复项添加为列中的变体。为了进一步说明我的问题:
我有一个像这样的熊猫数据框:
Case ButtonAsInteger
0 1 130
1 1 133
2 1 42
3 2 165
4 2 158
5 2 157
6 3 158
7 3 159
8 3 157
9 4 130
10 4 133
11 4 43
... ... ...
我已将其转换为这种形式:
grouped = activity2.groupby(['Case'])
values = grouped['ButtonAsInteger'].agg('sum')
id_df = grouped['ButtonAsInteger'].apply(lambda x: pd.Series(x.values)).unstack(level=-1
0 1 2 3 4 5 6 7 8 9
Case
1 130.0 133.0 42.0 52.0 47.0 47.0 32.0 94.0 NaN NaN
2 165.0 158.0 157.0 141.0 142.0 142.0 142.0 142.0 142.0 147.0
3 158.0 159.0 157.0 147.0 166.0 170.0 169.0 130.0 133.0 133.0
4 130.0 133.0 42.0 52.0 47.0 47.0 32.0 94.0 NaN NaN
现在我想找到重复项并将每个重复项标记为一个变体。所以在这个例子中,案例 1 和 4 应该得到变体 1。像这样:
Variants 0 1 2 3 4 5 6 7 8 9
Case
1 1 130.0 133.0 42.0 52.0 47.0 47.0 32.0 94.0 NaN NaN
2 2 165.0 158.0 157.0 141.0 142.0 142.0 142.0 142.0 142.0 147.0
3 3 158.0 159.0 157.0 147.0 166.0 170.0 169.0 130.0 133.0 133.0
4 1 130.0 133.0 42.0 52.0 47.0 47.0 32.0 94.0 NaN NaN
我已经尝试过这种方法https://stackoverflow.com/a/44999009。但它不适用于我的数据框。不幸的是我不知道为什么。
可能可以应用双 for 循环。因此,对于每一行,查看记录中是否存在重复项。我不知道这对大型记录是否有效。
我还添加了我的分组程序,因为此时可能已经使用重复项了?
解决方案
这按所有列分组并返回组索引(+ 1,因为基于零的索引是默认值)。我认为这应该是你想要的。
id_df['Variant'] = id_df.groupby(
id_df.columns.values.tolist()).grouper.group_info[0] + 1
给定上面的输入数据,生成的数据框:
0 1 2 Variant
Case
1 130 133 42 1
2 165 158 157 3
3 158 159 157 2
4 130 133 42 1
访问组索引可能有一种语法上更好的方法,但我没有找到。
推荐阅读
- c# - Asp.Net C#中Laravel的dd函数等价
- docker - 如何在 docker 中使用 gunicorn 运行烧瓶应用程序(导入本地模块)
- opendaylight - 无法在 Opendaylight Web 界面中查看交换机和主机
- angular - 授权标头未在 Angular 6 中发送
- c - 如何从编译的elf文件中提取所有函数,即使函数没有符号
- java - 如何使用java实现以下场景?
- php - 如何使用html表单向客户发送电子邮件和一份一份副本给我
- python - Python海龟将一只海龟的方向设置为另一只海龟
- php - 我的索引已定义,但我仍然收到未识别的错误
- python - 为什么 Python 的 multiprocessing.Queue 不会阻塞