BUG: Pandas Index fails with bitwise ufuncs · Issue #46769 · pandas-dev/pandas (original) (raw)

import pandas as pd import numpy as np print(pd.version) print(np.version) pandas_idx = [pd.Int64Index([6, 5, 3, 6, 5, 6, 3, 7, 7, 7, 2, 2, 9, 4, 2, 7, 4, 4, 7, 2, 2, 8, 3, 9, 9, 5, 4, 2, 4, 8, 9, 3, 7, 4, 6, 1, 3, 6, 7, 7, 6, 4, 2, 4, 6, 5, 1, 9, 6, 2, 9, 1, 5, 4, 7, 2, 1, 1, 7, 7, 3, 4, 6, 1, 1, 5, 6, 3, 7, 3, 7, 2, 1, 2, 8, 7, 3, 1, 9, 5, 7, 7, 2, 1, 5, 6, 2, 3, 4, 2, 2, 6, 2, 4, 8, 2, 8, 2, 2, 2], dtype='int64'), pd.Int64Index([5, 6, 3, 1, 8, 3, 7, 2, 8, 8, 7, 5, 5, 3, 5, 2, 8, 5, 6, 2, 1, 7, 9, 6, 6, 7, 2, 1, 5, 3, 7, 3, 4, 3, 1, 8, 8, 8, 1, 2, 8, 3, 3, 3, 2, 2, 5, 5, 9, 1, 4, 5, 8, 3, 3, 9, 3, 9, 9, 5, 1, 6, 8, 2, 1, 6, 5, 7, 9, 4, 8, 6, 5, 8, 8, 7, 2, 6, 4, 1, 4, 7, 2, 4, 4, 7, 2, 3, 8, 1, 4, 1, 2, 3, 3, 9, 6, 8, 1, 1], dtype='int64')] res = np.bitwise_and(*pandas_idx) print(res) print(np.bitwise_and(6, 5))

1.4.2 1.22.3 del3.py:5: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead. pandas_idx = [pd.Int64Index([6, 5, 3, 6, 5, 6, 3, 7, 7, 7, 2, 2, 9, 4, 2, 7, 4, 4, 7, 2, 2, 8, del3.py:10: FutureWarning: pandas.Int64Index is deprecated and will be removed from pandas in a future version. Use pandas.Index with the appropriate dtype instead. dtype='int64'), pd.Int64Index([5, 6, 3, 1, 8, 3, 7, 2, 8, 8, 7, 5, 5, 3, 5, 2, 8, 5, 6, 2, 1, 7, del3.py:16: FutureWarning: Index.and operating as a set operation is deprecated, in the future this will be a logical operation matching Series.and. Use index.intersection(other) instead. res = np.bitwise_and(*pandas_idx) Int64Index([6, 5, 3, 7, 2, 9, 4, 8, 1], dtype='int64') 4

When calling bitwise numpy ufuncs on Index objects, they seem to return wrong results. For instance numpy.bitwise_and, numpy.bitwise_or and numpy.bitwise_xor are the ones that worked correctly until pandas 1.3.5 and returning wrong results afterwards.

1.3.5 1.22.3 Int64Index([4, 4, 3, 0, 0, 2, 3, 2, 0, 0, 2, 0, 1, 0, 0, 2, 0, 4, 6, 2, 0, 0, 1, 0, 0, 5, 0, 0, 4, 0, 1, 3, 4, 0, 0, 0, 0, 0, 1, 2, 0, 0, 2, 0, 2, 0, 1, 1, 0, 0, 0, 1, 0, 0, 3, 0, 1, 1, 1, 5, 1, 4, 0, 0, 1, 4, 4, 3, 1, 0, 0, 2, 1, 0, 8, 7, 2, 0, 0, 1, 4, 7, 2, 0, 4, 6, 2, 3, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0], dtype='int64') 4