Ich versuche eine Loop-Funktion zu verwenden, um eine Matrix zu erstellen, ob ein Produkt in einer bestimmten Woche gesehen wurde.Python: Verwenden von .iterrows() zum Erstellen von Spalten
Jede Zeile in der df (die ein Produkt darstellt) hat ein close_date (das Datum, an dem das Produkt geschlossen wurde) und ein week_diff (die Anzahl der Wochen, in denen das Produkt aufgelistet wurde).
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)
Mein Ziel ist es zu sehen, wie viele alternative Produkte für jedes Produkt in jedem date_range aufgeführt wurden
Ich habe die folgende Schleife einzurichten:
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
Können Sie mir bitte erklären, warum die Die Zeile "row [col_head] = 1" fügt weder eine Spalte hinzu, noch fügt sie dieser Spalte für diese Zeile einen Wert hinzu.
Zum Beispiel, wenn:
row A has date range 1,2,3
row B has date range 2,3
row C has date range 3,4,5'
dann im Idealfall würde Ich mag bis Ende mit
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..
Ich glaube 'iterrows()' ist ein Python [Panda] (http: //pandas.pydata.org/) Methode auf einem Datenrahmen, der eine sehr spezifische Art von Datenstruktur ist. Es ist KEINE Kern-Python-Methode und kann nicht wie eine Standard-Python-Datenstruktur (wie eine Liste oder ein Wörterbuch) behandelt werden. Sie werden viel mehr Glück haben, wenn Sie bei dieser Frage Hilfe erhalten, wenn Sie angeben, dass es sich um eine ** Pandas ** -Frage und nicht nur um eine Python-Frage handelt. – tatlar
Du kannst ein df nicht mit der 'row' von' iterrows' mutieren, du brauchst 'df.loc',' df.iloc', 'df.ix' – EdChum
Also probiere' row [col_head] = 1' zu 'df.loc [row, col_head] = 1' – EdChum