我正在尝试将两个列与布尔值进行比较,如果布尔值不相等,则将第三列中的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行?理想情况下,我想同时应用两个更改,但是两个步骤也可以工作,以后可以合并它们。