python: à l'aide .iterrows() pour créer des colonnes
Je suis en train d'utiliser une fonction de boucle pour créer une matrice de savoir si un produit a été vu dans une semaine particulière.
Chaque ligne de la df (d'un produit) a un close_date (la date à laquelle le produit fermé) et un week_diff (le nombre de semaines que le produit a été répertorié).
import pandas
mydata = [{'subid' : 'A', 'Close_date_wk': 25, 'week_diff':3},
{'subid' : 'B', 'Close_date_wk': 26, 'week_diff':2},
{'subid' : 'C', 'Close_date_wk': 27, 'week_diff':2},]
df = pandas.DataFrame(mydata)
Mon but est de voir comment de nombreux autres produits ont été répertoriés pour chaque produit dans chaque date_range
J'ai mis en place la boucle suivante:
for index, row in df.iterrows():
i = 0
max_range = row['Close_date_wk']
min_range = int(row['Close_date_wk'] - row['week_diff'])
for i in range(min_range,max_range):
col_head = 'job_week_' + str(i)
row[col_head] = 1
Pouvez vous s'il vous plaît aider à expliquer pourquoi la "ligne[col_head] = 1" ligne n'est ni l'ajout d'une colonne, ni l'ajout d'une valeur à la colonne de la ligne.
Par exemple, si:
row A has date range 1,2,3
row B has date range 2,3
row C has date range 3,4,5'
ensuite, idéalement, je voudrais terminer avec
row A has 0 alternative products in week 1
1 alternative products in week 2
2 alternative products in week 3
row B has 1 alternative products in week 2
2 alternative products in week 3
&c..
iterrows()
est un Python Panda méthode sur un dataframe, qui est un type très précis de la structure de données. Ce n'est PAS un core Python méthode et ne peut être considérée comme un standard de Python structure de données (comme une liste ou un dictionnaire). Vous aurez beaucoup plus de chance d'obtenir de l'aide avec cette question si vous indiquez que c'est un Pandas question plutôt que juste un Python question.Vous ne pouvez pas muter une df à l'aide de la
row
de iterrows
, vous devez utiliser df.loc
, df.iloc
, df.ix
Donc, essayez
row[col_head] = 1
à df.loc[row,col_head] = 1
OriginalL'auteur citydreams | 2015-07-16
Vous devez vous connecter pour publier un commentaire.
Vous ne pouvez pas muter le df à l'aide de
row
ici pour ajouter une nouvelle colonne, vous feriez se référer soit à l'origine df ou de l'utilisation.loc
,.iloc
, ou.ix
, exemple:Vous pouvez modifier les lignes existantes:
Mais l'ajout d'une nouvelle colonne à l'aide de la ligne ne fonctionne pas:
L'a obtenu. Merci encore. se défait de newbie hat
OriginalL'auteur EdChum