Sagen wir, ich habe einen Datenrahmen vom TypEffizientes sammeln Links in Datenrahmen
individual, location, food
1 A a
1 A b
1 B a
1 A c
2 C a
2 C b
wo Einzelpersonen Verbindungen zwischen Lage und Essen schaffen. Ich möchte alle Links auf individueller Basis sammeln. Das heißt, wenn eine Person an den Standorten A
und B
und hatte (schließlich) Essen zu a
beobachtet wurde, b
und c
, möchte ich alle diese Orte und Lebensmittelarten gegeneinander verlinken:
location food
A a
A b
A c
B a
B b
B c
C a
C b
Eine - extrem ineffiziente - Vorgehensweise ist
import itertools
def foo(group):
list1 = group.location.unique()
list2 = group.food.unique()
return pd.DataFrame(data=list(itertools.product(list1, list2)), columns=['location', 'food'])
df.groupby(df.individual).apply(foo)
Gibt es einen besseren Weg, dies zu tun?