Я думаю, нужно DataFrame.duplicated
по обоим столбцам:
df = df[df.duplicated(['Name','Value'], keep=False)]
print (df)
Name Value
1 B 219
2 B 219
Но при необходимости вывод подсчитанных значений фильтруется по уровню Value
:
s = df.groupby("Value")["Name"].value_counts()
print (s)
df1 = s[s.index.get_level_values('Value').duplicated(keep=False)].reset_index(name='count')
print (df1)
Value Name count
0 219 B 2
1 219 D 1
Другое решение - создать DataFrame
с помощью reset_index
first:
df2 = df.groupby("Value")["Name"].value_counts().reset_index(name='count')
print (df2)
Value Name count
0 201 A 1
1 219 B 2
2 219 D 1
3 222 D 1
4 704 C 1
df1 = df2[df2['Value'].duplicated(keep=False)]
print (df1)
Value Name count
1 219 B 2
2 219 D 1