2016-11-08 5 views
2

Ich habe einen CSV-Datenrahmen wie unten, würde ich gerne zwei Spaltenwert vergleichen und dritte Spalte generieren, wenn Wert ist gleich wird True, nicht die gleiche Rückkehr False, wie mit Pandas vergleichen Python?Vergleichen Sie zwei Spalten Wert im Dataframe

one two 
1 a 
2 b 
3 a 
4 b 
5 5 
6 6 
7 7 
8 8 
9 9 
10 10 

Antwort

1

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 
Verwandte Themen