I am following this answer with 88 upvotes but it doesn't work anymore:
>>> df = pd.DataFrame(
     [['USA', 'Nevada', 'Las Vegas'],
      ['Brazil', 'Pernambuco', 'Recife']],
     columns=['Country', 'State', 'City']
 )
df['AllTogether'] = df['Country'].str.cat(df[['State', 'City']], sep=' - ')
I get the error:
    raise ValueError("Did you mean to supply a `sep` keyword?")
ValueError: Did you mean to supply a `sep` keyword?
Not sure what has changed since the posted answer.
I have pandas version of 0.22.0. I can't update the version due to test reasons.
Edit: I am not looking for alternate answer but the concern is about the error.
I was able to reproduce this error in pandas '0.21.1', but it appears to be a bug (which @Wen pointed out is now fixed in pandas 0.23.4). Regardless, you seem to be able to get around it by using df[['State', 'City']].values instead of just df[['State', 'City']], i.e by supplying a np.array instead of a dataframe (which is not the normal behaviour, seeing as the docs state you can pass it a dataframe):
df['AllTogether'] = df['Country'].str.cat(df[['State','City']].values,sep=' - ')
>>> df
  Country       State       City                  AllTogether
0     USA      Nevada  Las Vegas    USA - Nevada - Pernambuco
1  Brazil  Pernambuco     Recife  Brazil - Las Vegas - Recife
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With