DatetimeIndex in multi-indexes

109 views
Skip to first unread message

Alexander Kurakin

unread,
Jun 9, 2020, 12:37:07 PM6/9/20
to PyData
Hello!

I can use DatetimeIndex object as an index's item:

array = [ pd.date_range('2020-04-27', '2020-05-%02u' % i, freq='D') for i in range(1, 9) ]
index
= pd.Index(array)

But I can't use it for MultiIndex:

arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
         
[ pd.date_range('2020-04-27', '2020-05-%02u' % i, freq='D') for i in range(1, 9)]]
tuples
= list(zip(*arrays))
index
= pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])

Traceback (most recent call last):
 
File "test.py", line 12, in <module>
    index
= pd.MultiIndex.from_tuples(tuples, names=['first', 'second'])
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/indexes/multi.py", line 495, in from_tuples
   
return MultiIndex.from_arrays(arrays, sortorder=sortorder, names=names)
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/indexes/multi.py", line 427, in from_arrays
    codes
, levels = factorize_from_iterables(arrays)
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/arrays/categorical.py", line 2708, in factorize_from_iterables
   
return map(list, zip(*(factorize_from_iterable(it) for it in iterables)))
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/arrays/categorical.py", line 2708, in <genexpr>
   
return map(list, zip(*(factorize_from_iterable(it) for it in iterables)))
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/arrays/categorical.py", line 2680, in factorize_from_iterable
    cat
= Categorical(values, ordered=False)
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/arrays/categorical.py", line 357, in __init__
    codes
, categories = factorize(values, sort=False)
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/algorithms.py", line 636, in factorize
    values
, na_sentinel=na_sentinel, size_hint=size_hint, na_value=na_value
 
File "/home/sasha/miniconda3/lib/python3.7/site-packages/pandas/core/algorithms.py", line 484, in _factorize_array
    uniques
, codes = table.factorize(values, na_sentinel=na_sentinel, na_value=na_value)
 
File "pandas/_libs/hashtable_class_helper.pxi", line 1815, in pandas._libs.hashtable.PyObjectHashTable.factorize
 
File "pandas/_libs/hashtable_class_helper.pxi", line 1731, in pandas._libs.hashtable.PyObjectHashTable._unique
TypeError: unhashable type: 'DatetimeIndex'

Questions:
  1. Why is DatetimeIndex unshashable?
  2. Why Index doesn't need hashing elements but MultiIndex does?
Thanks!

Alexander Kurakin

unread,
Jun 28, 2026, 8:48:57 AM (9 days ago) Jun 28
to PyData
Up. Still relevant in Pandas 3.0.3.


  1. Why is DatetimeIndex unshashable?
  2. Why Index doesn't need hashing elements but MultiIndex does?
вторник, 9 июня 2020 г. в 19:37:07 UTC+3, Alexander Kurakin:
Reply all
Reply to author
Forward
0 new messages