-
-
Notifications
You must be signed in to change notification settings - Fork 19.4k
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 16Alternative 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: int64Additional 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.