Я хочу сопоставить людей с разными группами в то время.Хотя в настоящее время у меня есть реализация, которая делает эту работу, она становится очень медленной для больших DataFrames.Я искал в реализации функции groupby, чтобы найти членство в группах каждого человека, но не смог найти решение.Надеюсь, кто-то может указать мне правильное направление.
Пример того, как выглядит DataFrame:
d = {"person": [1,2,3,4,5,6,1,5,2,1,7],
"group": [1,1,1,2,2,2,3,3,3,4,4]}
df = pd.DataFrame(d)
print(d)
person group
0 1 1
1 2 1
2 3 1
3 4 2
4 5 2
5 6 2
6 1 3
7 5 3
8 2 3
9 1 4
10 7 4
(Рабочий) код в настоящее время выглядит следующим образом:
for g in df.group.unique():
df_g = df.loc[df.group == g]
for p in df_g.person.unique():
print(df.loc[df.person == p].group.unique()) # <-- the thing I care about.
[1 3 4]
[1 3]
[1]
[2]
[2 3]
[2]
[1 3 4]
[2 3]
[1 3]
[1 3 4]
[4]
Как уже говорилось, приведенный выше код очень медленный (он должен проходить через множество групп и даже больше людей).Можно ли будет выполнить ту же операцию через групповую передачу?