I have the below df as an example
| Product Code | Product Type | Price |
|---|---|---|
| 01478 | ELC | £119.00 |
| 01479 | GRN | £159.00 |
| 01514 | PWR | £100.00 |
| 01617 | ELC | £119.00 |
| 01819 | ELC – GRN – PWR | £300.00 |
| 01819 | ELC – GRN – PWR | £300.00 |
I am trying to change multiple values in the ‘Product Type’ column using a dict
This is my code:
df['Product Type'] = df['Product Type'].str.replace('ELC', 'Electric')
df['Product Type'] = df['Product Type'].str.replace('GRN', 'Green')
df['Product Type'] = df['Product Type'].str.replace('PWR', 'Power Supply')
When I use this it changes the values and works, even for ELC – GRN – PWR
However when I try to use a dict method just to improve code readability and make it more simple instead of loads of str.replace lines.
dict = {
'ELC' : 'Electric',
'GRN' : 'Green',
'PWR': 'Power Supply',
'-' : ' '}
It only changes the single ELC to Electric, and GRN to Green but does not change the ELC – GRN – PWR to Electric – Green – Power Supply.
Can I ask why this happens and what the solution is?
I’ve looked at many different approaches in stack but nothing seems to work effectively.
Thank You 🙂
>Solution :
you can use regex inside df.Series.replace (without str):
df['Product Type'] = df['Product Type'].replace(dict, regex=True)