Description
Feature Type
-
Adding new functionality to pandas
-
Changing existing functionality in pandas
-
Removing existing functionality in pandas
Problem Description
Pandas has many in-place operators implemented:
__iadd__, __isub__, __imul__, __itruediv_ __ifloordiv __imod__, __ipow__, __iand__, __ixor__, __ior__, __imatmul__
As for __rshift__
, __lshift__
, __irshift__
and __ilshift__
they don't work in version 2.2.2
.
>>> import pandas as pd
>>> s = pd.Series([0, 1, 2])
>>> s <<= 2
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for <<=: 'Series' and 'int'
And numpy
implements all methods:
>>> import numpy as np
>>> s = np.array([0, 1, 2])
>>> s <<= 3
>>> s
array([ 0, 8, 16])
Feature Description
Allow for __rshift__
, __lshift__
, __irshift__
and __ilshift__
calls in Series
and DataFrames
>>> import pandas as pd
>>> s = pd.Series([0, 1, 2])
>>> s << 3
0 0
1 8
2 16
>>> s <<= 3
>>> s
0 0
1 8
2 16
Alternative Solutions
For now, the solution is to create a new Series
operating over the underlying numpy
array
>>> pd.Series(s.values << 3)
0 0
1 8
2 16
dtype: int64
Additional Context
It is curious that the last issue that talks about shift operations is from more than 10 years ago (#2337). Indeed it's quite a niche feature and fits more computer scientists rather than data scientists. Anyway, I thought about this feature more for completeness and consistency with python operators rather than usefulness.