Skip to content

Replace partial matches behavior #5143

Closed
@TomAugspurger

Description

@TomAugspurger

I ran into some unexpected behavior with replace today.

I want to replace the answer with a numeric value according to the dictionary weights

In [33]: df.answer.head()
Out[33]: 
0       Strongly Agree
1                Agree
2              Neutral
3             Disagree
4    Strongly Disagree
Name: answer, dtype: object

In [34]: weights
Out[34]: 
{'Agree': 4,
 'Disagree': 2,
 'Neutral': 3,
 'Strongly Agree': 5,
 'Strongly Disagree': 1}

In [35]: df.answer.replace(weights).head()
Out[35]: 
0    4
1    4
2    3
3    2
4    2
dtype: int64

It looks like replace matches on the first part, Agree, or Disagree and doesn't make it through the dict to the Stronglys. Am I just being a noob with how regexes work, or is this a bug?

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions