0

I wonder how to replace the string value of 'Singapore' in location1 column with the string values from location2 column. In this case, they're Tokyo, Boston, Toronto and Hong Kong, Boston.

import pandas as pd
data = {'location1':["London, Paris", "Singapore", "London, New York", "Singapore", "Boston"], 
        'location2':["London, Paris", "Tokyo, Boston, Toronto", "London, New York", "Hong Kong, Boston", "Boston"]}

df = pd.DataFrame(data)

          location1               location2
0     London, Paris           London, Paris
1         Singapore  Tokyo, Boston, Toronto
2  London, New York        London, New York
3         Singapore       Hong Kong, Boston
4            Boston                  Boston

3 Answers 3

2

Simply, use .loc and indexing:

df.loc[df['location1'].eq('Singapore'), 'location1'] = df['location2']
print(df)

# Output:
                location1               location2
0           London, Paris           London, Paris
1  Tokyo, Boston, Toronto  Tokyo, Boston, Toronto
2        London, New York        London, New York
3       Hong Kong, Boston       Hong Kong, Boston
4                  Boston                  Boston
Sign up to request clarification or add additional context in comments.

Comments

2

We can do it using the numpy.where method :

>>> import numpy as np
>>> df["location1"] = np.where(df["location1"] == 'Singapore', df["location2"], df["location1"])
>>> df
    location1               location2
0   London, Paris           London, Paris
1   Tokyo, Boston, Toronto  Tokyo, Boston, Toronto
2   London, New York        London, New York
3   Hong Kong, Boston       Hong Kong, Boston
4   Boston                  Boston

Comments

1

Try:

df['location1'] = df['location1'].mask(df['location1'] == 'Singapore')\
                                 .fillna(df['location2'])

Output:

                location1               location2
0           London, Paris           London, Paris
1  Tokyo, Boston, Toronto  Tokyo, Boston, Toronto
2        London, New York        London, New York
3       Hong Kong, Boston       Hong Kong, Boston
4                  Boston                  Boston

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.