PandasのNaNの正体を教えてください。まずは下記をご覧ください。
Python
1>>> x1=pd.DataFrame({ 2 "id":[1,2,3,4,5,6,7,8,9,10], 3 "name":["1_name","2_name","3_name","4_name","5_name","6_name","7_name","8_name","9_name","10_name"] 4}) 5 6>>> x2=pd.DataFrame({ 7 "id":[1,2,3,4,5,6,7], 8 "department":["1_department","2_department","3_department","4_department","5_department","6_department","7_department"] 9}) 10 11>>> x = pd.merge(x1, x2, how="left" ,left_on=["id"],right_on=["id"])
で、データフレームxを作成します。
Python
1>>> x
id | name | department |
---|---|---|
1 | 1_name | 1_department |
2 | 2_name | 2_department |
3 | 3_name | 3_department |
4 | 4_name | 4_department |
5 | 5_name | 5_department |
6 | 6_name | 6_department |
7 | 7_name | 7_department |
8 | 8_name | NaN |
9 | 9_name | NaN |
10 | 10_name | NaN |
このデータフレームのNaNの箇所について下記の様になります
Python
1# PythonのNone 2>>> x["department"][8]==None#False 3 4# mathのnan 5>>> math.isnan(x["department"][8])# True 6>>> x["department"][8]==math.nan# False 7 8# Numpyのnan 9>>> x["department"][8]==np.nan# False 10>>> np.isnan(x["department"][8])# True
math.isnan()とmath.nanの時で真偽が異なるのも意味不明です。PandasのNaNはいったい何を表すのでしょうか?
具体的に困っている点
データフレームの特定の箇所を欠損させる処理を行った後、任意の条件に従ってデータを取捨選択してきますが、NoneとPandasのNaNは異なる値と判定されるので困っています。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/10 02:27
2019/05/10 02:29 編集
2019/05/10 02:31