熊猫基于另一列替换值条件

时间:2018-12-03 16:50:24

标签: pandas if-statement

我有一个看起来像这样的数据框:

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)

3 个答案:

答案 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
相关问题