python—根据另一列的内容将列中的值更改为布尔值

python—根据另一列的内容将列中的值更改为布尔值,python,pandas,dataframe,Python,Pandas,Dataframe,我有一个像这样的大框架: A B 0 NaN string1 1 NaN string2 2 Nan string1 3 Nan string1 如何更改列A中的所有值,使其基于列B中相同索引的条目是否包含特定字符串“stringX”而成为布尔值 我认为您需要指定布尔掩码,而不是==可以使用或使用: 在这种情况下,如果stringX=“string1”,则A列中的所需输出为True False truel!不客气! #if need Tru

我有一个像这样的大框架:

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

如何更改列A中的所有值,使其基于列B中相同索引的条目是否包含特定字符串“stringX”而成为布尔值

我认为您需要指定布尔掩码,而不是
==
可以使用或使用:





在这种情况下,如果stringX=“string1”,则A列中的所需输出为True False truel!不客气!
#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