熊猫有条件替换为多个条件

时间:2020-04-01 12:45:59

标签: python pandas

我正在尝试将两个列与布尔值进行比较,如果布尔值不相等,则将第三列中的NaN值替换为“否”,如果相等则将其替换为“是”。

但是,我只想在有值的情况下执行此操作,即,对于其中一列包含布尔值而另一列为NaN的行,则不这样做。

这仅在一种情况下有效。这是一个最小的工作示例:

<html>
   <body>
      <table>
         <tr>
            <td>abc</td>
            <td><b><font color="#ff0000">03-28-2020</font></b></td>
         </tr>
         <tr>
            <td>efg</td>
            <td>03-31-2020</td>
         </tr>
         <tr>
            <td>qrs</td>
            <td><b><font color="#ff0000">03-29-2020</font></b></td>
         </tr>
      </table>
   </body>
</html>

但是,当我尝试相反的情况时,使用了多个条件,但随后它还会选择具有NaN的组合,例如第5行,True + NaN,而我只想选择True + False或False + True组合。例如:

import pandas as pd
import numpy as np

df = pd.DataFrame([[True, True, np.nan], [False, False, np.nan], 
              [False, True, np.nan], [True, False, np.nan], 
              [False, np.nan, np.nan], [True, np.nan, np.nan]], columns=['A', 'B', 'C'])

mask = df['A'] == df['B']
df.loc[mask, 'C'] = 'Yes'

df
Out[225]: 
       A      B    C
0   True   True  Yes
1  False  False  Yes
2  False   True  NaN
3   True  False  NaN
4  False    NaN  NaN
5   True    NaN  NaN

在第二个示例中,是否可以仅选择3-4行而不选择5行?理想情况下,我想同时应用两个更改,但是两个步骤也可以工作,以后可以合并它们。

0 个答案:

没有答案