So beheben sie: typeerror: nicht unterstützte operandentypen für –: „str“ und „int“


Ein Fehler, der bei der Verwendung von Python auftreten kann, ist:

 TypeError : unsupported operand type(s) for -: 'str' and 'int'

Dieser Fehler tritt auf, wenn Sie versuchen, eine Subtraktion mit einer Zeichenfolgenvariablen und einer numerischen Variablen durchzuführen.

Das folgende Beispiel zeigt, wie dieser Fehler in der Praxis behoben werden kann.

So reproduzieren Sie den Fehler

Angenommen, wir haben den folgenden Pandas-DataFrame:

 import pandas as pd

#createDataFrame
df = pd. DataFrame ({' team ': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
                   ' points_for ': ['18', '22', '19', '14', '14', '11', '20', '28'],
                   ' points_against ': [5, 7, 17, 22, 12, 9, 9, 4]})

#view DataFrame
print (df)

  team points_for points_against
0 to 18 5
1 B 22 7
2 C 19 17
3 D 14 22
4 E 14 12
5 F 11 9
6 G 20 9
7:28 a.m. 4

#view data type of each column
print ( df.dtypes )

team object
points_for object
points_against int64
dtype:object

Nehmen wir nun an, wir versuchen, die Spalte „points_against“ von der Spalte „points_for“ zu subtrahieren:

 #attempt to perform subtraction
df[' diff '] = df. points_for - df. points_against

TypeError : unsupported operand type(s) for -: 'str' and 'int'

Wir erhalten einen TypeError , weil die Spalte „points_for“ eine Zeichenfolge ist, während die Spalte „ points_against “ numerisch ist.

Um eine Subtraktion durchzuführen, müssen beide Spalten numerisch sein.

So beheben Sie den Fehler

Um diesen Fehler zu beheben, können wir .astype(int) verwenden, um die Spalte „points_for“ in eine Ganzzahl zu konvertieren, bevor wir die Subtraktion durchführen:

 #convert points_for column to integer
df[' points_for '] = df[' points_for ']. astype (int)

#perform subtraction
df[' diff '] = df. points_for - df. points_against

#view updated DataFrame
print (df)

  team points_for points_against diff
0 A 18 5 13
1 B 22 7 15
2 C 19 17 2
3 D 14 22 -8
4 E 14 12 2
5 F 11 9 2
6 G 20 9 11
7:28 4 24

#view data type of each column
print ( df.dtypes )

team object
points_for int32
points_against int64
diff int64
dtype:object

Beachten Sie, dass wir keine Fehlermeldung erhalten, da die beiden Spalten, die wir für die Subtraktion verwendet haben, numerische Spalten sind.

Zusätzliche Ressourcen

Die folgenden Tutorials erklären, wie Sie andere häufige Fehler in Python beheben:

So beheben Sie KeyError in Pandas
So beheben Sie: ValueError: Float NaN kann nicht in int konvertiert werden
So beheben Sie: ValueError: Operanden konnten nicht mit Formen übertragen werden

Einen Kommentar hinzufügen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert