Я думаю, проблема в том, что вы неправильно обрабатываете группы. Вы группируете и затем применяете свою функцию на основе результатов DESCR: whole df с вашей командой .apply(iterated(df))
. Кроме того, я думаю, что вы хотите использовать combinations
вместо product
.
Возможно, вам придется разбить его на части и обрабатывать группы индивидуально. Рассмотрим:
import pandas as pd
import itertools
data = [[1,'ab'],[1,'bc'],[1,'de'],[2,'gh'],[2,'hi'],[2,'jk'],[3,'kl'],[3,'lm'],[3,'yz']]
df = pd.DataFrame(data,columns=['Ids','DESCR'])
def show_combos(df): #replace with your function...
combos = itertools.combinations(df.DESCR, 2)
for c in combos:
print(c)
groups = df.groupby('Ids')
#iterate through the groups, which are mini-data frames
for name, group in groups:
print('group name: {}'.format(name))
show_combos(group)
print()
Что дает группы, которые вы хотели:
group name: 1
('ab', 'bc')
('ab', 'de')
('bc', 'de')
group name: 2
('gh', 'hi')
('gh', 'jk')
('hi', 'jk')
group name: 3
('kl', 'lm')
('kl', 'yz')
('lm', 'yz')