For Schleife und Ergebnis in Variable speichern

Code-Stücke können hier veröffentlicht werden.
Antworten
Tiger1982
User
Beiträge: 2
Registriert: Mittwoch 23. November 2022, 13:48

Hallo,

ich bin neu hier im Forum und hoffe, mir kann hier geholfen werden :)

Ich habe eine xml Datei, die zahlreiche Informationen beinhaltet.

Diese xml Datei lese ich mit:

Code: Alles auswählen

df = pd.read_xml(folder_path2 + filename6)
Darin gibt es eine Bezeichnung nAtt. Diese beinhaltet einen der folgenden Werte: 0, 1, 2, 3
Das sieht dann so aus: nAtt=" 0"

Mit:

Code: Alles auswählen

nAtt = df["nAtt"].dropna().to_numpy()
speichere ich den vorkommenden Wert.

Jetzt will ich herausfinden, was dieser Wert ist und dementsprechend einen anderen dafür in die Variable nAtt_change einsetzen. Ich dachte, ich könnte das mit eine For Schleife machen:

Code: Alles auswählen

for 0 in nAtt:
    nAtt_change = 0
for 1 in nAtt:
    nAtt_change = -6
for 2 in nAtt:
    nAtt_change = -10
for 3 in nAtt:
    nAtt_change = -20
Allerdings bekomme ich da immer diese Fehlermeldung:

for 0 in nAtt:
^
SyntaxError: can't assign to literal

Kann mir jemand helfen und sagen, was ich wie ändern muss?

Danke.

Viele Grüße
Jan
Tiger1982
User
Beiträge: 2
Registriert: Mittwoch 23. November 2022, 13:48

Hi,

ich hab meinen For Schleife korrigiert:

Code: Alles auswählen

nAtt_change = np.zeros(shape = len(nAtt))  # Tool attenuation during inspection
for i in range(len(nAtt)):
   if nAtt[i] == 0:
      nAtt_change[i] = 0
   if nAtt[i] == 1:
      nAtt_change[i] = -6
   if nAtt[i] == 2:
      nAtt_change[i] = -10
   if nAtt[i] == 3:
      nAtt_change[i] = -20
Jetzt bekomme ich einen Fehler Traceback error zu nAtt = df25["nAtt"].dropna().to_numpy()
Könnte es sein, weil in der xml nAtt=" 0" statt nAtt="1= steht?
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

Wenn man mit for-Schleifen über numpy-Arrays arbeitet, macht man mit hoher Wahrscheinlichkeit etwas falsch.

Code: Alles auswählen

mapping = np.array([0,-6,-10,-20])
data = np.array([1,2,0,3,0,1,3])
data_change = mapping[data]
# array([ -6, -10,   0, -20,   0,  -6, -20])
Benutze sprechende Namen. Was soll nAtt denn bedeuten? Variablennamen schreibt man generell komplett klein. Variablennamen werden nicht durchnummeriert. Warum filename6? Pfade setzt man nicht mit + zusammen, sondern nutzt das, was pathlib.Path so bietet.
Jetzt wäre es noch hilfreich, wenn Du auch den Traceback hier postest und außerdem den Aufbau und Beispieldaten Deines Dataframes. Denn ohne diese Informationen kann man Dir hier schlecht helfen.
Antworten