Quantcast
Channel: Active questions tagged excel - Stack Overflow
Viewing all articles
Browse latest Browse all 90161

Python - How to replace all matching text in a column by a reference table - which requires replacing multiple matching text within a cell

$
0
0

Hi I'm totally new to Python but am hoping someone can show me the ropes.

I have a csv reference table which contains over 1000 rows with unique Find values, example of reference table:

|Find          |Replace     |
------------------------------
|D2-D32-dog    |Brown       |
|CJ-E4-cat     |Yellow      |
|MG3-K454-bird |Red         |

I need to do a find and replace of text in another csv file. Example of Column in another file that I need to find and replace (over 2000 rows):

|Pets                                  |
----------------------------------------
|D2-D32-dog                            |
|CJ-E4-cat, D2-D32-dog                 |
|MG3-K454-bird, D2-D32-dog, CJ-E4-cat  |
|T2- M45 Pig                           |
|CJ-E4-cat, D2-D32-dog                 |

What I need is for python to find and replace, returning the following, and if no reference, return original value:

|Expected output    |
---------------------
|Brown              |
|Yellow, Brown      |
|Red, Brown, Yellow |
|T2- M45 Pig        |
|Yellow, Brown      |

Thanking you in advance.

FYI - I don't have any programming experience, usually use Excel but was told that Python will be able to achieve this. So I have given it a go in hope to achieve the above - but it's returning invalid syntax error...

import pandas as pd

dfRef1 = pd.read_csv(r'C:\Users\Downloads\Lookup.csv')
#File of Find and Replace Table

df= pd.read_csv(r'C:\Users\Downloads\Data.csv')
#File that contains text I want to replace

dfCol = df['Pets'].tolist()
#converting Pets column to list from Data.csv file 

for x in dfCol:
    Split = str(x).split(',')
#asking python to look at each element within row to find and replace

newlist=[]
for index,refRow in dfRef1.iteritems():
     newRow = []
     for i in Split:
              if i == refRow['Find']:
              newRow.append(refRow['Replace']
              else
              newRow.append(refRow['Find'])
              newlist.append(newRow)
    newlist

#if match found replace, else return original text
#When run, the code is Returning - SyntaxError: invalid syntax
#I've also noticed that the dfRef1 dtype: object

Am I even on the right track? Any advise is greatly appreciated. I understand the concept of Excel VLookup, however, because the cell value contains multiple lookup items which i need to replace within the same cell, I'm unable to do this in Excel.

Thanks again.


Viewing all articles
Browse latest Browse all 90161

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>