SettingWithCopyWarning: Unerwartete Probleme mit Python-Pandas-Ansichten vs. Kopieren, während .loc bereits verwendet wiPython

Python-Programme
Anonymous
 SettingWithCopyWarning: Unerwartete Probleme mit Python-Pandas-Ansichten vs. Kopieren, während .loc bereits verwendet wi

Post by Anonymous »

(Ähnliche Fragen mit dieser Warnung laufen immer auf das Gleiche hinaus, was in den Dokumenten beschrieben wird; verwenden Sie .loc, aber ich mache das bereits und die Zeile, die im Fehler zur Verwendung von .loc stehen sollte, ist daher verdächtig leer)
Python-Version: 3.13.9

Pandas-Version: 2.3.3

Tkinter-Version: 8.6
Kontext:
  • Ich automatisiere eine ziemlich komplexe Aufgabe und habe sie endlich zum Laufen gebracht. Nachdem ich mich über die Benutzeroberflächen informiert hatte, richtete ich einen einfachen Tkinter ein und packte meinen Arbeitscode darin ein.
  • Jetzt funktioniert mein Code nicht mehr :/
  • Jedes Mal, wenn ich versuche, mit .loc oder sogar .drop auf meinen Pandas-Datenrahmen zuzugreifen, erscheint die SettingWithCopyWarning (Es wird versucht, einen Wert für eine Kopie festzulegen eines Slice aus einem DataFrame).
  • Ich habe die Pandas-Dokumentation zu diesem Problem gelesen und „normalerweise“ sollte es bei .loc nicht passieren, es ist sogar einer der normalen Vorschläge, die Sie verwenden sollten, wenn Sie auf dieses Problem stoßen. (Dokument hier: https://note.nkmk.me/en/python-pandas-view-copy/)
Was ich eigentlich mache:
Innerhalb einer Funktion scrape ich ein df namens translationData aus, das ich anschließend ein wenig bearbeiten muss, um die Probleme auszubügeln

Code: Select all

for i, row in translationData.iterrows():
if re.match("^Output for field 1",description):
translationData.loc[i,"Display"]= "001bis"
elif re.match("Menu items: Language names",description):
translationData.drop(index=i,axis=1, inplace=True)
Und das sind die eigentlichen Fehlermeldungen (komplett mit geheimnisvollen Leerzeichen):

Code: Select all

c:\Users\*****\TranslatorV2_0_0.py:171: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
translationData.loc[i,"Display"]= "001bis"
c:\Users\*****\TranslatorV2_0_0.py:178: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame

See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
translationData.drop(index= dropables, inplace=True)
ein zensiertes Beispiel der ersten beiden Zeilen meines Datenrahmens:

Code: Select all

           Display    Description                   ...     Language4        Language5
0      001        [Lorem ipsum dolor sit amet]  ...     [consectetur]   [adipiscing elit]
1      002        [sed do eiusmod tempor ]      ...     [incididunt]    [ut labore]
Meine Ausgabe macht deutlich, dass diese Warnungen kein falsch positives Ergebnis sind, während alle DF-Änderungen in meinem ursprünglichen Code funktionierten. Das Hinzufügen von tkinter und das Schreiben von allem in Klartextfunktionen führt zu diesen Warnungen und keine meiner DF-Änderungen mit .loc funktioniert tatsächlich.
In den Dokumenten heißt es, dass dies unvorhersehbar ist und da es in meinem ursprünglichen Code funktioniert, weiß ich wirklich nicht, wie ich das beheben kann, da alle verwandten Probleme, die ich gefunden habe, ihre Lösung hatten „use .loc“, was ich auch gemacht habe.

Weiß jemand von euch, wie ich das beheben kann?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post