Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Alih keluar pendua dalam DF dan tukar kepada JSON obj dalam python

Alih keluar pendua dalam DF dan tukar kepada JSON obj dalam python

王林
王林ke hadapan
2024-02-22 13:20:03741semak imbas

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

Isi soalan

Saya ada df yang serupa dengan yang di bawah

name         series
=============================
a             a1
b             b1
a             a2
a             a1
b             b2

Saya perlu menukar siri ini kepada senarai yang harus diberikan kepada setiap nama seperti kamus atau json obj seperti di bawah

{
   "a": ["a1", "a2"],
   "b": ["b1", "b2"]
}

Setakat ini saya telah mencuba menggunakan groupby tetapi ia hanya mengumpulkan semuanya ke dalam satu kamus

test = df.groupby("series")[["name"]].apply(lambda x: x)

Kod di atas memberikan output seperti df

Series
Name
A     0   A1
      2   A2
      3   A1
B     1   B1
      4   B2

Sebarang bantuan amatlah dihargai

Terima kasih


Jawapan betul


Pertama drop_duplicates 确保有 ,然后 groupby.agg Sebagai senarai:

out = df.drop_duplicates().groupby('name')['series'].agg(list).to_dict()

Atau hubungi unique:

out = df.groupby('name')['series'].agg(lambda x: x.unique().tolist()).to_dict()

Output: {'a': ['a1', 'a2'], 'b': ['b1', 'b2']}

Jika anda mempunyai lajur lain, pastikan anda hanya menyimpan lajur yang anda minati:

out = (df[['name', 'series']].drop_duplicates()
       .groupby('name')['series'].agg(list).to_dict()
      )

Isih senarai:

out = (df.groupby('name')['series']
         .agg(lambda x: sorted(x.unique().tolist())).to_dict()
      )

Contoh:

# 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']}

Atas ialah kandungan terperinci Alih keluar pendua dalam DF dan tukar kepada JSON obj dalam python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam