如何使用pandas查找重复名称?

20 投票
6 回答
46886 浏览
提问于 2025-04-17 18:07

我有一个叫做 pandas.DataFrame 的数据表,其中有一列叫做 name,里面存放的是一些字符串(名字)。我想要找出在这一列中出现超过一次的名字,应该怎么做呢?

我试过这样做:

funcs_groups = funcs.groupby(funcs.name)
funcs_groups[(funcs_groups.count().name>1)]

但是这样做并没有把只出现一次的名字过滤掉。

6 个回答

8

value_counts 这个功能可以告诉你有多少个重复的值。

names = df.name.value_counts()
names[names > 1]
11

一句话可以这样写:

x.set_index('name').index.get_duplicates()

索引里有一个查找重复项的方法,但列似乎没有类似的方法。

39

如果你想找出那些名字重复的行(除了第一次出现的情况),你可以试试这个方法。

In [16]: import pandas as pd
In [17]: p1 = {'name': 'willy', 'age': 10}
In [18]: p2 = {'name': 'willy', 'age': 11}
In [19]: p3 = {'name': 'zoe', 'age': 10}
In [20]: df = pd.DataFrame([p1, p2, p3])

In [21]: df
Out[21]: 
   age   name
0   10  willy
1   11  willy
2   10    zoe

In [22]: df.duplicated('name')
Out[22]: 
0    False
1     True
2    False

撰写回答