Supprimez les doublons dans DF et convertissez-les en obj JSON en python

王林
Libérer: 2024-02-22 13:20:03
avant
750 Les gens l'ont consulté

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

Contenu de la question

J'ai un df similaire à celui ci-dessous

name         series
=============================
a             a1
b             b1
a             a2
a             a1
b             b2
Copier après la connexion

Je dois convertir la série en une liste qui doit être attribuée à chaque nom comme un dictionnaire ou un obj json comme ci-dessous

{
   "a": ["a1", "a2"],
   "b": ["b1", "b2"]
}
Copier après la connexion

Jusqu'à présent, j'ai essayé d'utiliser groupby mais cela regroupe simplement tout dans un seul dictionnaire

test = df.groupby("series")[["name"]].apply(lambda x: x)
Copier après la connexion

Le code ci-dessus donne une sortie de type df

Series
Name
A     0   A1
      2   A2
      3   A1
B     1   B1
      4   B2
Copier après la connexion

Toute aide est grandement appréciée

Merci


Bonne réponse


Premier drop_duplicates 确保有 ,然后 groupby.agg Sous forme de liste :

out = df.drop_duplicates().groupby('name')['series'].agg(list).to_dict()
Copier après la connexion

Ou appelez unique :

out = df.groupby('name')['series'].agg(lambda x: x.unique().tolist()).to_dict()
Copier après la connexion

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

Si vous avez d'autres colonnes, veillez à ne conserver que celles qui vous intéressent :

out = (df[['name', 'series']].drop_duplicates()
       .groupby('name')['series'].agg(list).to_dict()
      )
Copier après la connexion

Trier la liste :

out = (df.groupby('name')['series']
         .agg(lambda x: sorted(x.unique().tolist())).to_dict()
      )
Copier après la connexion

Exemple :

# 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']}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:stackoverflow.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal