Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Map each words inside a dataframe to a dictionary

I have a dictionary

a=mapping.set_index('String')
dict_y = a['Mapping'].to_dict()
dict_y

{'mp3': 'sound',
 'player': 'device',
 'horses': 'horse',
 'laptop': 'electronic device',
 'hard disk': 'storage'}

I want to replace each words in a dataframe row , please see the sample dataframes

Original Dataframe

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

Item Code Item Description
1 64 GB sound device
2 15 inch laptop

Required Dataframe

Item Code Item Description
1 64 GB mp3 player
2 15 inch electronic device

The code that I have developed so far is this, But I don’t know how to move forward

def testing ():
    test_dic=dict_y
    text = text.split(" ")

    new_text = []
    for word in text:
        if word in test_dic:
            new_text.append(test_dic[word])
        else:
            new_text.append(word)
    return " ".join(new_text)

testing()

df_test['ITEM DESCRIPTION']=df_test['ITEM DESCRIPTION'].apply(testing())
df_test['ITEM DESCRIPTION']

>Solution :

Note- You want to replace key or value in the dictonary with the word present in pandas rows.

You can check for keys in pandas rows and replace it with values or vice-versa.

But you want to match key & values present in pandas row and then replace with the opposite of key/value present in dict, which I think may not be possible.

You can keep words in dict as dict which you can to check in pandas rows and then replace it with it’s values present in dict as below.

Use .replace with regex=True

Ex:

import pandas as pd

dic = {"quick brown fox": "fox", "lazy dog": "dog", "u": "you"}
#Update as per comment
dic = {r"\b{}\b".format(k): v for k, v in dic.items()}

df = pd.DataFrame({"Text": ["The quick brown fox jumps over the lazy dog"]})
df["Text"] = df["Text"].replace(dic, regex=True)
print(df)

Ref link- Pandas replace part of string with values from dictionary

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading