Heim  >  Artikel  >  Backend-Entwicklung  >  Entfernen Sie Duplikate in DF und konvertieren Sie sie in JSON obj in Python

Entfernen Sie Duplikate in DF und konvertieren Sie sie in JSON obj in Python

王林
王林nach vorne
2024-02-22 13:20:03692Durchsuche

删除 DF 中的重复项并在 python 中转换为 JSON obj

Frageninhalt

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


Richtige Antwort


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()
      )

Sortieren Sie die Liste:

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen