-1
votes

Comment ajouter ou mettre à jour des informations à une liste existante dans Python

Tout ce que je veux faire, c'est de renseigner une liste de clients uniques avec leur année de naissance correspondante. La plupart pour l'écrire à mon DF pour remplir ces espaces vides. Les noms de John et Mike apparaissent deux fois sur la liste. John a fourni son année de naissance la première fois qu'il a acheté un article mais n'a pas fait la deuxième fois. Alors que Mike a fait le contraire de ce que John a fait. Vous trouverez ci-dessous un exemple de mon Dataframe sur les transactions des clients.

a_dict = dict(zip(df.cst_names, df.birth_year))


1 commentaires

df [df.birth_year! = ''] .Reset_index (DROP = true)


3 Réponses :


1
votes

J'ai essayé de supprimer d'abord les dates vides, puis zippées. J'espère que cela fonctionne pour vous.

df_altered = df.drop(df[df['birth_year']==''].index)
a_dict = dict(zip(df_altered.cst_names, df_altered.birth_year))
a_dict


2 commentaires

Oui, ça marche pour moi. Maintenant, je veux utiliser A_DICT pour affecter les lacunes manquantes. Comment puis-je y parvenir possible?


df.loc [df ['birth_year'] == '', "naissance_year"] = [A_DICT [x] pour x dans df.loc [df ["naissance_year '] ==' '," cst_names']]]



0
votes

J'ai fait ce qui suit et ça marche, mais je pense que c'est assez sale. Dans la première partie, j'ajouterai par défaut l'âge "" et ensuite je l'ai mis à jour avec l'âge que j'ai obtenu. Si vous voulez seulement la naissance non nulle, l'autre réponse que vous avez reçue est bonne.

dict_ = {}
list_names = df.cst_names.unique()
for name in df.cst_names.unique():
    dict_[name]=""
df = df[df["birth_year"]!=""]
for name in df.cst_names.unique():
    dict_[name]= df.loc[df["cst_names"]==name, "birth_year"].values[0]


0 commentaires

0
votes

une version Appliquer

result_dict=df[df['birth_year']!=''].groupby('cst_names').apply(lambda row: row['birth_year']).reset_index()[['cst_names','birth_year']].set_index('cst_names').T.to_dict('list')


0 commentaires