2017-08-14 4 views
2

ich eine dafatframe wie dieses:Python Pandas - ändern Werte in Spalte basierend auf dem Inhalt einer anderen Spalte auf Boolean

A  B 
0 NaN string1 
1 NaN string2 
2 Nan string1 
3 Nan string1 

Wie kann ich alle Werte in Spalte ändern A, so dass sie boolean sind basierend auf ob der Eintrag bei gleichem Index in Spalte B eine bestimmte Zeichenkette "stringX" enthält?

+1

Wenn in diesem Fall stringX = "string1" ist, dann ist die gewünschte Ausgabe in Spalte A Wahr Wahr Falsch Wahr Wahr –

+0

Dank jezrael! –

+0

Gern geschehen! – jezrael

Antwort

3

Ich glaube, Sie boolean Maske müssen zuweisen, anstatt == möglich ist die Verwendung eq oder verwenden assign:

#if need True False values by condition 
stringX = "string1" 
df['A'] = df['B'] == stringX 
print (df) 
     A  B 
0 True string1 
1 False string2 
2 True string1 
3 True string1 

df['A'] = df['B'].eq(stringX) 
print (df) 
     A  B 
0 True string1 
1 False string2 
2 True string1 
3 True string1 

df = df.assign(A=df['B'].eq(stringX)) 
print (df) 
     A  B 
0 True string1 
1 False string2 
2 True string1 
3 True string1 

#if need values of column by condition 
df.loc[df['B'] == 'string1', 'A'] = df['B'] 
print (df) 
     A  B 
0 string1 string1 
1  NaN string2 
2 string1 string1 
3 string1 string1 

#if need scalar by condition 
df.loc[df['B'] == 'string1', 'A'] = 1 
print (df) 
    A  B 
0 1 string1 
1 NaN string2 
2 1 string1 
3 1 string1 

#if need if else condition with 2 scalars 
df['A'] = np.where(df['B'] == 'string1', 1, 2) 
print (df) 
    A  B 
0 1 string1 
1 2 string2 
2 1 string1 
3 1 string1 
Verwandte Themen