@@ -470,7 +470,6 @@ cdef class {{name}}HashTable(HashTable):
470
470
int ret = 0
471
471
{{dtype}}_t val
472
472
khiter_t k
473
- bint seen_na = 0
474
473
{{name}}Vector uniques = {{name}}Vector()
475
474
{{name}}VectorData *ud
476
475
@@ -479,30 +478,13 @@ cdef class {{name}}HashTable(HashTable):
479
478
with nogil:
480
479
for i in range(n):
481
480
val = values[i]
482
- {{if float_group}}
483
- if val == val:
484
- k = kh_get_{{dtype}}(self.table, val)
485
- if k == self.table.n_buckets:
486
- kh_put_{{dtype}}(self.table, val, &ret)
487
- if needs_resize(ud):
488
- with gil:
489
- uniques.resize()
490
- append_data_{{dtype}}(ud, val)
491
- elif not seen_na:
492
- seen_na = 1
493
- if needs_resize(ud):
494
- with gil:
495
- uniques.resize()
496
- append_data_{{dtype}}(ud, NAN)
497
- {{else}}
498
481
k = kh_get_{{dtype}}(self.table, val)
499
482
if k == self.table.n_buckets:
500
483
kh_put_{{dtype}}(self.table, val, &ret)
501
484
if needs_resize(ud):
502
485
with gil:
503
486
uniques.resize()
504
487
append_data_{{dtype}}(ud, val)
505
- {{endif}}
506
488
return uniques.to_array()
507
489
508
490
{{endfor}}
@@ -854,19 +836,11 @@ cdef class PyObjectHashTable(HashTable):
854
836
for i in range(n):
855
837
val = values[i]
856
838
hash(val)
839
+ k = kh_get_pymap(self.table, <PyObject*>val)
840
+ if k == self.table.n_buckets:
841
+ kh_put_pymap(self.table, <PyObject*>val, &ret)
842
+ uniques.append(val)
857
843
858
- # `val is None` below is exception to prevent mangling of None and
859
- # other NA values; note however that other NA values (ex: pd.NaT
860
- # and np.nan) will still get mangled, so many not be a permanent
861
- # solution; see GH 20866
862
- if not checknull(val) or val is None:
863
- k = kh_get_pymap(self.table, <PyObject*>val)
864
- if k == self.table.n_buckets:
865
- kh_put_pymap(self.table, <PyObject*>val, &ret)
866
- uniques.append(val)
867
- elif not seen_na:
868
- seen_na = 1
869
- uniques.append(nan)
870
844
871
845
return uniques.to_array()
872
846
0 commit comments