J'ai un df similaire à celui ci-dessous
name series ============================= a a1 b b1 a a2 a a1 b b2
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"] }
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)
Le code ci-dessus donne une sortie de type df
Series Name A 0 A1 2 A2 3 A1 B 1 B1 4 B2
Toute aide est grandement appréciée
Merci
Premier drop_duplicates
确保有 ,然后 groupby.agg
Sous forme de liste :
out = df.drop_duplicates().groupby('name')['series'].agg(list).to_dict()
Ou appelez unique
:
out = df.groupby('name')['series'].agg(lambda x: x.unique().tolist()).to_dict()
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() )
out = (df.groupby('name')['series'] .agg(lambda x: sorted(x.unique().tolist())).to_dict() )
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']}
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!