J'ai un dataframe qui ressemble à ceci:
a=['a','b','c','d']
b=['the','fox','the','then']
c=['quick','jumps','lazy','barks']
d=['brown','over','dog','loudly']
df=pd.DataFrame(zip(a,b,c,d),columns=['indexcol','col1','col2','col3'])
et un dictionnaire qui ressemble à ceci :
keys=['a','b','c','d']
vals=[]
vals.append(['col1','col3'])
vals.append(['col1','col2'])
vals.append(['col1','col2','col3'])
vals.append(['col2','col3'])
newdict = {k: v for k, v in zip(keys, vals)}
Ce que j'essaie de faire est de créer une nouvelle colonne dans df qui construit une déclaration pour chaque ligne. En prenant la première ligne comme exemple, la phrase devrait ressembler à ceci :
"col1 est 'le' | col3 est 'paresseux' "
un autre exemple utilisant la 3ème ligne juste pour rendre la tâche à accomplir parfaitement claire : "col1 est 'marron' | col2 est 'le' | col3 est 'alors' "
essentiellement, je veux faire référence aux valeurs du dictionnaire pour rechercher la colonne dans df en utilisant les clés du dictionnaire comme référence de ligne correspondant à indexcol dans df.
Merci d'avance.
Je ne sais pas si j'ai bien compris mais tu peux essayer :
df = df.set_index("indexcol")
for k, v in newdict.items():
row = df.loc[k]
df.loc[k, "new_column"] = " | ".join(f"{i} is '{row[i]}'" for i in v)
print(df.reset_index())
Impressions :
indexcol col1 col2 col3 new_column
0 a the quick brown col1 is 'the' | col3 is 'brown'
1 b fox jumps over col1 is 'fox' | col2 is 'jumps'
2 c the lazy dog col1 is 'the' | col2 is 'lazy' | col3 is 'dog'
3 d then barks loudly col2 is 'barks' | col3 is 'loudly'
Cet article est collecté sur Internet, veuillez indiquer la source lors de la réimpression.
En cas d'infraction, veuillez [email protected] Supprimer.
laisse moi dire quelques mots