我想你需要mask
:
df = pd.DataFrame({'name':['John Doe', 'Jack Bauer???', 'Chris Smith'],
'flag':['True', 'False', 'True']})[['name', 'flag']]
print (df)
name flag
0 John Doe True
1 Jack Bauer??? False
2 Chris Smith True
df['new'] = df.name.mask(df.flag=='False', False)
print (df)
name flag new
0 John Doe True John Doe
1 Jack Bauer??? False False
2 Chris Smith True Chris Smith
如果需要更換色譜柱name
:
df['name'] = df.name.mask(df.flag=='False', False)
name flag
0 John Doe True
1 False False
2 Chris Smith True
如果replace
串True
和False
布爾:
df['flag'] = df.flag.replace({'True': True, 'False': False})
df['new'] = df.name.mask(~df.flag, False)
print (df)
name flag new
0 John Doe True John Doe
1 Jack Bauer??? False False
2 Chris Smith True Chris Smith
更換name
:
df['flag'] = df.flag.replace({'True': True, 'False': False})
df['name'] = df.name.mask(~df.flag, False)
print (df)
name flag
0 John Doe True
1 False False
2 Chris Smith True
與loc
另一種解決方案:
df.loc[df.flag=='True', 'new'] = df.name
print (df)
name flag new
0 John Doe True John Doe
1 Jack Bauer??? False NaN
2 Chris Smith True Chris Smith
更換name
:
df.loc[df.flag=='False', 'name'] = False
print (df)
name flag
0 John Doe True
1 False False
2 Chris Smith True
感謝您詳細的和靈活的答案! – unpairestgood
很高興能幫到你! – jezrael