python - 计算按 ID pandas 分组的重复数
问题描述
我不确定这是否是一个重复的问题,但它就是这样。
假设我有下表:
import pandas
lst = [1,1,1,2,2,3,3,4,5]
lst2 = ['A','A','B','D','E','A','A','A','E']
df = pd.DataFrame(list(zip(lst, lst2)),
columns =['ID', 'val'])
将输出下表
+----+-----+
| ID | Val |
+----+-----+
| 1 | A |
+----+-----+
| 1 | A |
+----+-----+
| 1 | B |
+----+-----+
| 2 | D |
+----+-----+
| 2 | E |
+----+-----+
| 3 | A |
+----+-----+
| 3 | A |
+----+-----+
| 4 | A |
+----+-----+
| 5 | E |
+----+-----+
目标是计算按 ID 分组的 VAL 上的重复项:
+----+-----+--------------+
| ID | Val | is_duplicate |
+----+-----+--------------+
| 1 | A | 1 |
+----+-----+--------------+
| 1 | A | 1 |
+----+-----+--------------+
| 1 | B | 0 |
+----+-----+--------------+
| 2 | D | 0 |
+----+-----+--------------+
| 2 | E | 0 |
+----+-----+--------------+
| 3 | A | 1 |
+----+-----+--------------+
| 3 | A | 1 |
+----+-----+--------------+
| 4 | A | 0 |
+----+-----+--------------+
| 5 | E | 0 |
+----+-----+--------------+
我尝试了以下代码,但它计算了整体重复项
df_grouped = df.groupby(['notes']).size().reset_index(name='count')
而下面的代码只做重复计数
df.duplicated(subset=['notes'])
什么是最好的方法?
解决方案
让我们试试duplicated
df['is_dup']=df.duplicated(subset=['ID','val'],keep=False).astype(int)
df
Out[21]:
ID val is_dup
0 1 A 1
1 1 A 1
2 1 B 0
3 2 D 0
4 2 E 0
5 3 A 1
6 3 A 1
7 4 A 0
8 5 E 0
推荐阅读
- flutter - 如何使用这个库 import_Js_Library
- java - 使用 ThreadLocal 在 TestNG 上运行并行测试
- arrays - 将表加载到数组中并合并所有重复项 - Excel VBA
- julia - 在 Julia 中将程序的文档字符串打印到标准输出
- datetime - 在 Go 中如何处理没有日期的挂钟时间?
- c++ - 使用 --call-stack fp 的 perf 记录无法展开主函数
- arrays - PHP:如何在数组的 $_POST 中禁用过滤空值
- python - 如何使用 pyinstaller 将 .py 文件转换为 .exe 文件
- javascript - 尝试将框架 URL 复制到剪贴板并失败(Chrome 扩展)
- react-native - 有什么方法可以使用 react-native-share 与 HEADING 共享 qr-image?