Wenn Sie eine App erstellt haben, die CSV-Dateien mit Pandas bearbeitet, Das Ergebnis wird wie erwartet bearbeitet. Ich wurde gewarnt, dass SettingWithCopyWarning.
SettingWithCopyWarning Ich denke, es ist eine Warnung, weil sie als Referenz übergeben wird (was ist das?). Wenn ein Teil der Originaldaten extrahiert wird → einem Teil davon zugewiesen wird Wollten Sie "diesen Teil der Originaldaten" ändern? Sie wissen nicht, ob Sie "neue Daten mit einigen Änderungen" erstellen wollten?
Fühlen Sie sich frei, in den Kommentaren zu kommentieren.
Wenn Sie in copy () angeben, dass es sich um eine Kopie handelt, nicht um eine Referenz, SettingWithCopyWarning wurde behoben.
Zuerst, In einem Verzeichnis (Ordner) namens output_files Erstellen Sie eine CSV-Datei mit dem Namen data.csv.
Der Inhalt ist apple,8 orange,15 banana,4 apple,1 Es ist geworden.
data.csv
apple,8
orange,15
banana,4
apple,1
Diese CSV-Datei Löschen Sie Apfel, 1 und Umgeschrieben auf Apfel, 9
data.csv
apple,9
orange,15
banana,4
Das Ziel ist zu bearbeiten.
check_data.py
import pandas as pd
def check():
df = pd.read_csv('output_files/data.csv', names=['fru_name', 'count'])
#Am häufigsten in vc(Duplikat)Obst lagern
vc = df['fru_name'].value_counts().index[0]
#Speichern Sie die Anzahl der Vorkommen in fre
fre = df['fru_name'].value_counts().iat[0]
if fre > 1:
#Entfernen Sie die doppelte Fruchtlinie und ändern Sie sie in die Variable new_In Daten speichern
new_data = df.drop_duplicates(subset='fru_name')
#Dup die ursprüngliche Anzahl von doppelten Früchten_In Anzahl speichern
dup_count = int(new_data.loc[new_data['fru_name'] == vc, 'count'])
# dup_Anzahl+1
dup_count += 1
new_data.loc[new_data['fru_name'] == vc, 'count'] = dup_count
#data.CSV überschreiben
new_data.to_csv('output_files/data.csv', index=False, header=False)
check()
python
SettingWithCopyWarning
Die CSV-Datei ist wie vorgesehen
data.csv
apple,9
orange,15
banana,4
Wurde aber bearbeitet SettingWithCopyWarning wird ausgegeben.
In copy (), um zu verdeutlichen, dass es sich um eine Kopie handelt, nicht um eine Referenz
python
new_data = df.drop_duplicates(subset='fru_name')
Zu
python
#copy()Seien Sie explizit eine Kopie, keine Referenz
new_data = df.drop_duplicates(subset='fru_name').copy()
ändern.
check_data2.py
import pandas as pd
def check():
df = pd.read_csv('output_files/data.csv', names=['fru_name', 'count'])
#Am häufigsten in vc(Duplikat)Obst lagern
vc = df['fru_name'].value_counts().index[0]
#Speichern Sie die Anzahl der Vorkommen in fre
fre = df['fru_name'].value_counts().iat[0]
if fre > 1:
#Entfernen Sie die doppelte Fruchtlinie und ändern Sie sie in die Variable new_In Daten speichern
new_data = df.drop_duplicates(subset='fru_name').copy()
#Dup die ursprüngliche Anzahl von doppelten Früchten_In Anzahl speichern
dup_count = int(new_data.loc[new_data['fru_name'] == vc, 'count'])
# dup_Anzahl+1
dup_count += 1
new_data.loc[new_data['fru_name'] == vc, 'count'] = dup_count
#data.CSV überschreiben
new_data.to_csv('output_files/data.csv', index=False, header=False)
check()
mit diesem, Ohne SettingWithCopyWarning Die CSV-Datei ist wie vorgesehen Es wurde bearbeitet.
Recommended Posts