LoginSignup
1
0

More than 1 year has passed since last update.

互いにnp.nanを含む2つの集合をunionした際にnp.nanが2つ残存する現象

Last updated at Posted at 2021-06-16

概要

  • この記事は解決策ではなく現象のメモです
    • 理由や解決策をご存知の方は教えてください
  • 互いにnp.nanを含む2つの集合(setA, setB)をunionした
    • setC = setA.union(setB)
    • 期待:結果の和集合にはnp.nanは(当然)1つ含まれる
    • 結果:結果の和集合にはnp.nanが(なぜか)2つ含まれていた
  • 何故にwhy? # 未解決
    • 原因を探ってみた
      • 和集合に含まれる2つのnp.nanはidが異なる
        • np.nanA, np.nanBとする
        • 通常のnp.nanのidとも異なる
      • np.isnanとmath.isnanでは共にTrue
      • np.nanA is np.nan, np.nanB is np.nanはFalse
        • 通常はnp.nan is np.nan はTrueのハズ
    • np.nanA, np.nanBの生成過程で別インスタンスになっている?
      • なお、元集合は異なるpandas dfの列から生成している
        • setA = set(dfA['colname'].unique().tolist())
        • setB = set(dfB['colname'].unique().tolist())
  • 暫定対処
    • 元集合の生成時にnp.isnanを噛ませた
      • ar_A = dfA['colname'].unique()
      • setA = set(ar_A[~np.isnan(ar_A)])
    • np.nanは処理が全て終わってから要素として追加(どうせ含まれてるので)
  • 環境
    • python 3.8.8
    • pandas 1.2.4
    • numpy 1.20.1
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0