Pandas Promotes Int To Float When Filtering
Pandas seems to be promoting an int to a float when filtering. I've provided a simple snippet below but I've got a much more complex example which I believe this promotion leads to
Solution 1:
There is no float comparison happening here. isin
is returning NaN
's for missing data, and since you are using numpy
's int64
, the result is getting cast to float64
.
In 0.24, pandas added a nullable integer dtype, which you can use here.
df1 = df1.astype('Int64')
df2 = df2.astype('Int64')
df1[~df1.isin(df2)]
col1 col2
0 NaN NaN
1 NaN NaN
2 NaN NaN
3 4 13
4 5 14
Just be aware that if you wanted to use numpy operations on the result, numpy would treat the above as an array with dtype object
.
Post a Comment for "Pandas Promotes Int To Float When Filtering"