0
Diese Frage ist ähnlich wie eine Frage here, aber mit einem Tupel-Index. eine Spalte von Listen Gruppierung arbeitet für einen einzelnen Index fein:pandas groupby: Aggregieren von Listen mit einem Tupel-Index
mydata = [{'idx': 'A', 'list_str': ['hi', 'babe']},
{'idx': 'A', 'list_str': ['take', 'a', 'walk']},
{'idx': 'A', 'list_str': []},
{'idx': 'B', 'list_str': ['on', 'the', 'wild', 'side']}]
df = pd.DataFrame(mydata)
grouped = df.groupby('idx')
print(grouped.agg({'list_str': lambda x: tuple(x)}))
Mit dem erwarteten Ausgang:
idx list_str
A [hi, babe, take, a, walk]
B [on, the, wild, side]
jedoch ein zweiter Index nicht mehr das Hinzufügen funktioniert:
mydata = [{'idx': 'A', 'idx2': 'B', 'list_str': ['hi', 'babe']},
{'idx': 'A', 'idx2': 'B', 'list_str': ['take', 'a', 'walk']},
{'idx': 'A', 'idx2': 'B', 'list_str': []},
{'idx': 'B', 'idx2': 'C', 'list_str': ['on', 'the', 'wild', 'side']}]
df = pd.DataFrame(mydata)
grouped = df.groupby(('idx', 'idx2'))
print(grouped.agg({'list_str': sum}))
Gewährt a ValueError
, Function does not reduce
.
Was ist der richtige Weg, dies zu tun?
Haben Sie den Code versucht? Dies gibt tatsächlich den gleichen genauen Fehler. – nbubis
Ich habe es versucht, mit genau der Eingabe, die Sie zur Verfügung gestellt. Haben Sie eine Liste '[]' anstelle eines Tupels '()' in der Groupby-Call-Funktion verwendet? Oder sind Ihre Eingabedaten falsch konstruiert, da sie zwei separate Indizes anstelle eines einzelnen Tupelindexes haben? – jack6e
mit der gleichen 'mydata' Variable und 'df = pd.DataFrame (mydata); gruppiert = df.groupby (['idx', 'idx2']); print (grouped.agg ({'list_str': sum})) 'gibt den gleichen Fehler unter Verwendung der Pandas-Version 0.19.2. – nbubis