比较 Nan 值是 True 使用 np.where 或替代



我想匹配两列,如果它们都是 True。我需要从非常大的数据集中删除子集。

我遇到了2个问题:

  1. 当 rowA.exprityDate = NaN 和 rowB.exprityDate = NaN 时,我的条件返回 false。我相信这是因为NaN是一种特殊条件。有没有办法解决这个问题。我的匹配条件如下:
  2. 有没有办法进行交叉匹配条件? rowA.baseCptyId[0] == rowB.extCptyId[1] and rowA.extcptyId[1] == RowB.extcptyID[0]...使用下表会更清楚一些,其中前两行的匹配列为 False。

这是我正在使用的匹配条件:

    combine_series = pd.DataFrame(dict(rowA = rowA, rowB = rowB))
    combine_series['Matched'] = np.where(combine_series['rowA'] == combine_series['rowB'], True, False)

这是生成的匹配列

                                    rowA          rowB Matched
baseCptyID                       2231200          5900   False
extCptyID                           5900       2231200   False
notional                         3.4e+07       3.4e+07    True
startDate                     2015-05-29    2015-05-29    True
expiryDate                           NaN           NaN   False
settlementDate                2020-06-29    2020-06-29    True
rate                             0.03375       0.03375    True
spread                               NaN           NaN   False
paymentFreq                           PA            PA    True
resetFreq                             PA            PA    True
modelUsed                       FixedLeg      FixedLeg    True
PayoutCCY                            AUD           AUD    True
DayCountConv                ACT/ACT ICMA  ACT/ACT ICMA    True
join_column                      2231200       2231200    True

让我们试试这个逻辑,它占据了 NaN 的优势!= NaN 解析为 True。

df['Matched']=(df.rowA == df.rowB) | ((df.rowA != df.rowA) & (df.rowB != df.rowB))

输出:

                       rowA          rowB Matched
baseCptyID           2231200          5900   False
extCptyID               5900       2231200   False
notional             3.4e+07       3.4e+07    True
startDate         2015-05-29    2015-05-29    True
expiryDate               NaN           NaN    True
settlementDate    2020-06-29    2020-06-29    True
rate                 0.03375       0.03375    True
spread                   NaN           NaN    True
paymentFreq               PA            PA    True
resetFreq                 PA            PA    True
modelUsed           FixedLeg      FixedLeg    True
PayoutCCY                AUD           AUD    True
DayCountConv    ACT/ACT ICMA  ACT/ACT ICMA    True
join_column          2231200       2231200    True

最新更新