Python 如果为True,则保留列值,否则为False
假设我有这样一个数据帧:Python 如果为True,则保留列值,否则为False,python,pandas,dataframe,Python,Pandas,Dataframe,假设我有这样一个数据帧: df = pd.DataFrame({'name':['John Doe', 'Jack Bauer???', 'Chris Smith'], 'flag':['True', 'False', 'True]})[['name', 'flag']] 如您所见,第一个和第三个名称的格式正确,但第二个名称的文本不正确。我想要一个新的列(或“名称”上方的替代列),如下所示: 'name': 'John Doe' False 'Chris Smith' 在熊猫
df = pd.DataFrame({'name':['John Doe', 'Jack Bauer???', 'Chris Smith'],
'flag':['True', 'False', 'True]})[['name', 'flag']]
如您所见,第一个和第三个名称的格式正确,但第二个名称的文本不正确。我想要一个新的列(或“名称”上方的替代列),如下所示:
'name':
'John Doe'
False
'Chris Smith'
在熊猫身上获得这种理想效果的最佳方法是什么?我正在努力使用口罩,并申请让它发挥作用 我认为您需要:
如果需要更换列名称
:
df['name'] = df.name.mask(df.flag=='False', False)
name flag
0 John Doe True
1 False False
2 Chris Smith True
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
df.loc[df.flag=='False', 'name'] = False
print (df)
name flag
0 John Doe True
1 False False
2 Chris Smith True
如果字符串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
替换名称
:
df['name'] = df.name.mask(df.flag=='False', False)
name flag
0 John Doe True
1 False False
2 Chris Smith True
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
df.loc[df.flag=='False', 'name'] = False
print (df)
name flag
0 John Doe True
1 False False
2 Chris Smith True
另一个解决方案包括:
替换名称
:
df['name'] = df.name.mask(df.flag=='False', False)
name flag
0 John Doe True
1 False False
2 Chris Smith True
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
df.loc[df.flag=='False', 'name'] = False
print (df)
name flag
0 John Doe True
1 False False
2 Chris Smith True
谢谢你详细而灵活的回答!很高兴能帮助你!