Pandas 根据另一列替换条件值
我有一个如下所示的数据帧:Pandas 根据另一列替换条件值,pandas,if-statement,Pandas,If Statement,我有一个如下所示的数据帧: col1 col2 Yes 23123 No 23423423 Yes 34234 No 13213 我想替换col2中的值,这样如果col1中的“是”,则返回空白,如果“否”,则返回初始值 我想看看这个: col1 col2 Yes No 23423423 Yes No 13213 我已尝试过此方法,但“否”没有返回任何结果: def map_value(x): if x in ['Yes']:
col1 col2
Yes 23123
No 23423423
Yes 34234
No 13213
我想替换col2中的值,这样如果col1中的“是”,则返回空白,如果“否”,则返回初始值
我想看看这个:
col1 col2
Yes
No 23423423
Yes
No 13213
我已尝试过此方法,但“否”没有返回任何结果:
def map_value(x):
if x in ['Yes']:
return ''
else:
return None
df['col2'] = df['col1'].apply(map_value)
有很多方法可以做到这一点,其中之一就是
df.loc[df.col1 == 'Yes', 'col2'] = ''
输出:
col1 col2
Yes
No 23423423
Yes
No 13213
通过从OP的post复制样本数据并使用以下命令创建
df
:
df=pd.read_clipboard();
df
col1 col2
0 Yes 23123
1 No 23423423
2 Yes 34234
3 No 13213
你能试试下面的吗
m=df['col1']=='No'
df['col2']=df['col2'].where(m,'')
df
运行代码后,输出如下所示:
col1 col2
0 Yes
1 No 23423423
2 Yes
3 No 13213
你可以用numpy来做这个
import pandas as pd
import numpy as np
d = {'col1': ['yes', 'no', 'yes', 'no'], 'col2': [23123,23423423,34234,13213]}
df = pd.DataFrame(data=d)
df['col2'] = np.where(df.col1 == 'yes', '', df.col2)
df