我有一个看起来像这样的数据框:
col1 col2
Yes 23123
No 23423423
Yes 34234
No 13213
我想替换col2中的值,以便如果col1中的“是”则返回空白,如果“否”则返回初始值
我想看这个:
col1 col2
Yes
No 23423423
Yes
No 13213
我已经尝试过了,但是'否'返回None:
def map_value(x):
if x in ['Yes']:
return ''
else:
return None
df['col2'] = df['col1'].apply(map_value)
答案 0 :(得分:5)
有很多解决方法,其中之一是
df.loc[df.col1 == 'Yes', 'col2'] = ''
输出:
col1 col2
Yes
No 23423423
Yes
No 13213
答案 1 :(得分:1)
通过复制OP帖子中的示例数据并使用以下命令来创建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
答案 2 :(得分:1)
您可以为此使用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