Определите дублирующиеся группы, используя информационный фрейм Pandas - PullRequest
0 голосов
/ 28 января 2019

У меня есть фрейм данных, как описано ниже, и мне нужно найти дубликаты групп по столбцам - c2, c3 и c4 и соответствующим образом назвать группы.Для любого значения в столбце C1, если количество строк одинаково и имеет одинаковый набор значений во всех строках, это дублирующаяся группа, и ее следует пометить тем же именем группы, в противном случае это уникальная группа.

Фрейм данных:

df = pd.DataFrame({'C1': ['A', 'A', 'A', 'A', 'B', 'B', 'C', 'C', 'C', 'C', 'D', 'D', 'D'],
                   'C2': ['1', '2', '3', '4', '1', '2', '1', '2', '3', '4', '1', '2', '3'],
                   'C3': ['1', '2', '3', '4', '1', '2', '1', '2', '3', '4', '1', '2', '3'],
                   'C4': ['1', '2', '3', '4', '1', '2', '1', '2', '3', '4', '1', '2', '3']
                   })

enter image description here

Ожидаемый результат:

enter image description here

Любая помощь с этим?

1 Ответ

0 голосов
/ 28 января 2019

Три шага

df['Newkey']=tuple(zip(df.C2,df.C3)) # make value to tuple 
s=df.groupby('C1').Newkey.apply(tuple)# make all value to tuple 

s2='G'+(s.reset_index().groupby('Newkey',sort=False).C1.ngroup()+1).astype(str)
df['Newkey']=df.C1.map(dict(zip(s.index,s2))) # map it back
df
   C1 C2 C3 Newkey
0   A  1  1     G1
1   A  2  2     G1
2   A  3  3     G1
3   A  4  4     G1
4   B  1  1     G2
5   B  2  2     G2
6   C  1  1     G1
7   C  2  2     G1
8   C  3  3     G1
9   C  4  4     G1
10  D  1  1     G3
11  D  2  2     G3
12  D  3  3     G3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...