简体   繁体   中英

Pandas Replace part of string with value from other column

I have a dataframe (see example, because sensitive data) with a full term (string), a text snippet (one big string) containing the full term and an abbreviation (string). I have been struggling with how to replace the full term in the text snippet with the corresponding abbrevation. Can anyone help? Example:

    term                      text_snippet                                 abbr
0   aanvullend onderzoek      aanvullend onderzoek is vereist om...        ao/

So I want to end up with:

    term                      text_snippet                                 abbr
0   aanvullend onderzoek      ao/ is vereist om...                         ao/

You can use apply and replace terms with abbrs:

df['text_snippet'] = df.apply(
    lambda x: x['text_snippet'].replace(x['term'], x['abbr']), axis=1)

df

Output:

                   term          text_snippet abbr
0  aanvullend onderzoek  ao/ is vereist om...  ao/

Here is a solution. I made up a simple dataframe:

df = pd.DataFrame({'term':['United States of America','Germany','Japan'],
              'text_snippet':['United States of America is in America',
                           'Germany is in Europe',
                           'Japan is in Asia'],
              'abbr':['USA','DE','JP']})
df

Dataframe before solution:

              term              text_snippet                            abbr
0   United States of America    United States of America is in America  USA
1   Germany                     Germany is in Europe                    DE
2   Japan                       Japan is in Asia                        JP

Use apply function on every row:

df['text_snippet'] = df.apply(lambda row : row['text_snippet'].replace(row['term'],row['abbr']), axis= 1 )

Output:

                term            text_snippet        abbr
0   United States of America    USA is in America   USA
1   Germany                     DE is in Europe     DE
2   Japan                       JP is in Asia       JP

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM