Skip to content

ENH: add __rshift__, __lshift__, __irshift__ and __ilshift__ #60693

Open
@luxedo

Description

@luxedo

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.

Activity

luxedo

luxedo commented on Jan 11, 2025

@luxedo
Author

If that's a desired feature I'd be glad to add a PR for it

added 4 commits that reference this issue on Jun 1, 2025

FEAT pandas-dev#60693: shift operations for Series and DataFrames

FEAT pandas-dev#60693: shift operations for Series and DataFrames

FEAT pandas-dev#60693: shift operations for Series and DataFrames

ENH pandas-dev#60693: shift operations for Series and DataFrames

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    EnhancementNeeds TriageIssue that has not been reviewed by a pandas team memberNumeric OperationsArithmetic, Comparison, and Logical operations

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

      Participants

      @simonjayhawkins@luxedo

      Issue actions

        ENH: add `__rshift__`, `__lshift__`, `__irshift__` and `__ilshift__` · Issue #60693 · pandas-dev/pandas