Мой гугл подвел меня, я думаю, что моя главная проблема в том, что я не знаю, как сформулировать вопрос (извините за дерьмовый заголовок). Я пытаюсь найти общее количество каждый раз, когда 2 человека голосуют одинаково. Ниже вы увидите пример того, как выглядят данные и результаты, которые я искал. У меня есть рабочее решение, но оно очень медленное (см. Внизу), и мне было интересно, есть ли лучший способ сделать это.
This is how the data is shaped
----------------------------------
event person vote
1 a y
1 b n
1 c nv
1 d nv
1 e y
2 a n
2 b nv
2 c y
2 d n
2 e n
----------------------------------
This is the output im looking for
----------------------------------
Person a b c d e
a 2 0 0 1 2
b 0 2 0 0 0
c 0 0 2 1 0
d 1 0 1 2 1
e 2 0 0 1 2
----------------------------------
Рабочий код
df = df.pivot(index='event', columns='person', values='vote')
frame = pd.DataFrame(columns=df.columns, index=df.columns)
for person1, value in frame.iterrows():
for person2 in frame:
count = 0
for i, row in df.iterrows():
person1_votes = row[person1]
person2_votes = row[person2]
if person1_votes == person2_votes:
count += 1
frame.at[person1, person2] = count