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