我有以下数据框架:
import pandas as pd
df_test = pd.DataFrame(data=[['AP1', 'House1'],
['AP1', 'House1'],
['AP2', 'House1'],
['AP3', 'House2'],
['AP4','House2'],
['AP5', 'House2']],
columns=['AP', 'House'],
index=[0, 1, 2, 0, 1, 1])
我需要检查列值的每个子集,看看是否有重复的索引。例如,在House
列中,我们有House1
的三个条目,并且没有重复的索引。但是对于条目House2
,我们有一个重复索引1
。
我已经试过了:
print(f'{df_test.index.duplicated().sum()} repeated entries')
但是这给了3
重复的条目,因为它没有单独考虑列的每个值。
一个可能的解决方案:
print(df_test.reset_index().duplicated(['index', 'AP']).sum())
print(df_test.reset_index().duplicated(['index', 'House']).sum())
输出:
0
1
您可以使用:
>>> (df_test.reset_index(names='Dups')
.groupby('House', as_index=False)['Dups']
.agg(lambda x: x.duplicated().sum()))
House Dups
0 House1 0
1 House2 1