Ich habe eine df, die der folgenden ähnelt
name series ============================= a a1 b b1 a a2 a a1 b b2
Ich muss die Serie in eine Liste umwandeln, die jedem Namen wie Wörterbuch oder JSON-OBJ zugewiesen werden sollte, wie unten dargestellt
{ "a": ["a1", "a2"], "b": ["b1", "b2"] }
Bisher habe ich es mit Groupby versucht, aber es gruppiert einfach alles in einem einzigen Wörterbuch
test = df.groupby("series")[["name"]].apply(lambda x: x)
Der obige Code liefert eine df-ähnliche Ausgabe
Series Name A 0 A1 2 A2 3 A1 B 1 B1 4 B2
Jede Hilfe wird sehr geschätzt
Danke
Zuerst drop_duplicates
确保有 ,然后 groupby.agg
Als Liste:
out = df.drop_duplicates().groupby('name')['series'].agg(list).to_dict()
Oder rufen Sie an unique
:
out = df.groupby('name')['series'].agg(lambda x: x.unique().tolist()).to_dict()
Ausgabe: {'a': ['a1', 'a2'], 'b': ['b1', 'b2']}
Wenn Sie andere Spalten haben, achten Sie darauf, nur die zu behalten, die Sie interessieren:
out = (df[['name', 'series']].drop_duplicates() .groupby('name')['series'].agg(list).to_dict() )
out = (df.groupby('name')['series'] .agg(lambda x: sorted(x.unique().tolist())).to_dict() )
Beispiel:
# input Name Series 0 A Z1 1 B B1 2 A A2 3 A Z1 4 B B2 # output {'A': ['A2', 'Z1'], 'B': ['B1', 'B2']}
Das obige ist der detaillierte Inhalt vonEntfernen Sie Duplikate in DF und konvertieren Sie sie in JSON obj in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!