Sie benötigen, wenn Werte gemischt werden (string
und int
):
df['three'] = df.one == df.two
Aber brauchen to_numeric
wenn Werte nicht gemischt sind - dtype
der ersten Spalte ist int
und zweite ist object
was offensichtlich string
ist und in Spalte one
sind nicht NaN
Werte, weil to_numeric
mit Parameter errors='coerce'
NaN
für nicht numerische Werte zurückgeben:
print (pd.to_numeric(df.two, errors='coerce'))
0 NaN
1 NaN
2 NaN
3 NaN
4 5.0
5 6.0
6 7.0
7 8.0
8 9.0
9 10.0
Name: two, dtype: float64
df['three'] = df.one == pd.to_numeric(df.two, errors='coerce')
print (df)
one two three
0 1 a False
1 2 b False
2 3 a False
3 4 b False
4 5 5 True
5 6 6 True
6 7 7 True
7 8 8 True
8 9 9 True
9 10 10 True
Schnellere Lösung mit Series.eq
:
df['three'] = df.one.eq(pd.to_numeric(df.two, errors='coerce'))
print (df)
one two three
0 1 a False
1 2 b False
2 3 a False
3 4 b False
4 5 5 True
5 6 6 True
6 7 7 True
7 8 8 True
8 9 9 True
9 10 10 True