Quand je fais cela:calculer une valeur dans un Colum de dataframe d'une autre colonne, mais seulement si une condition dans une 3ème colonne est remplie
import pandas as pd
table={'x':[1,2,3,4,5,1,2,3,4,5,1,2,3,4,5],
'y':[1,1,2,2,2,1,2,3,4,5,1,2,2,2,3],
'z':[0,0,2,2,0,1,2,0,4,5,0,2,0,2,3],
'type':['a','a','a','a','a','b','b','b','b','b','c','c','c','c','c']}
df=pd.DataFrame(table, columns=['x','y','z','type'])
mask = df.z==0
df.x[mask] = 1./df.y[mask]
Je me plaint et dit le comportement souhaité, mais pandas géants:
Voir les mises en garde dans la documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy df.x [masque] = 1./df.y[mask]
maintenant, ceci est juste un tout petit peu df ici et je peux faire l'avertissement aller loin de faire les changements dans la colonne «x» rangée par rangée avec iloc ou similaire. Mais dans mon programme d'analyse de données, la df est plus large, donc l'approche iloc ralentit un peu.
Existe-t-il un meilleur moyen d'obtenir les modifications apportées dans la colonne x, en utilisant les valeurs de colonnes y, uniquement dans les lignes où une condition est vraie dans la colonne z?
Merci!
Cela a fonctionné - muchos gracias! –
@Charlie_M da nada! – piRSquared