Ich versuche, einen leeren Datenrahmen zu erstellen und füllen Sie den leeren Datenrahmen mit Spalten in einer anderen Datei vorhanden. Es funktioniert, wenn ich diesen einfachen Code verwende.Erstellen eines leeren Datenrahmens und Füllen mit vorhandener Spalte in einer anderen Datei mit den Bedingungen
InputData['Quote'] = store['QUOTE_ID']
aber wenn ich einige Bedingungen vor dem Code hinzufügen, dann ist es nicht die Bedingungen akzeptieren und gibt dieselben Werte wie im Speicher (original) Datei. unten ist mein Code, den ich versuche zu verwenden.
ursprünglicher Datensatz
InputData = pd.read_csv('datalink')
leeren Datenrahmen
OutputData=pd.DataFrame()
Code mit Bedingungen
for i in xrange(len(InputData.index)):
if (i % 5000) == 0:
print i,
if ((InputData.ix[i,'WIN']=='Y') and ((InputData.ix[i,'COM_C']=='H') or (InputData.ix[i,'COM_C']=='S')) and(InputData.ix[i,'COM_L']!=0)):
OutputData['Quote']=InputData['QUOTE_ID']
OutputData['ComList']=InputData['COM_LISTPR']
OutputData['WIN']=1
OutputData['COM_C']=InputData['COM_C']
OutputData.to_csv(link,index=False)
ursprünglicher Datensatz
QUOTE_ID WIN COM_C COM_L
1400453-IT N H 1.46E+05
1400453-IT N H 7.12E+04
1400453-IT N H 2.74E+04
1403796-IT Y S 3.11E+04
1400453-IT N M 3.12E+02
1403796-IT Y H 3.97E+04
1403796-IT Y H 3.97E+04
1403796-IT Y M 1.99E+02
1403796-IT Y M 1.99E+02
1403796-IT Y H 7.40E+04
1403796-IT Y H 7.40E+04
1403796-IT Y M 3.19E+02
1403796-IT Y M 3.19E+02
1403796-IT Y H 9.56E+04
012 Schaffung
erwartet Datensatz
nur Y von Inputdata erfordern und ersetzen auf 1, wenn Y
Quote WIN COM_C COM_LISTPR
1403796-IT 1 S 3.11E+04
1403796-IT 1 H 3.97E+04
1403796-IT 1 H 3.97E+04
1403796-IT 1 H 7.40E+04
1403796-IT 1 H 7.40E+04
1403796-IT 1 H 9.56E+04
vielen Dank im Voraus
Ich wusste nicht, Dataframe hatte ein Ersetzen-Attribut, gut zu wissen. Aber da es nur 'Y' in der Spalte 'WIN' gibt, könntest du genauso gut verwenden: modified_df ['WIN'] = 1 – ysearka
Ich habe eine Warnung erhalten, als ich das versuchte - 'SettingWithCopyWarning: Ein Wert versucht es auf eine Kopie eines Slices von einem DataFrame gesetzt werden. Versuchen Sie mit .loc [row_index, col_indexer] = Wert stattdessen " –
Ja, weil die Art und Weise, Sie definiert Modified_df, es ist ein Bild von df, kein ganz neues Objekt. Wenn Sie beim ersten Definieren von "modified_df" .copy() hinzufügen, wird die Warnung nicht mehr angezeigt. – ysearka