Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

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

Open
Labels
Enhancement Needs TriageIssue that has not been reviewed by a pandas team member Numeric OperationsArithmetic, Comparison, and Logical operations
@luxedo

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Enhancement Needs TriageIssue that has not been reviewed by a pandas team member Numeric OperationsArithmetic, Comparison, and Logical operations

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

        AltStyle によって変換されたページ (->オリジナル) /