简体   繁体   中英

python pandas - change values in column to Boolean based on content of another column

I have a dafatframe such as this:

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

How can I change all the values in column A such that they are boolean based on whether the entry at same index in column B contains a certain string "stringX"?

I think you need assign boolean mask, instead == is possible use eq or use 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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM