【问题标题】:Concatenate columns of a dataframe with a separator用分隔符连接数据框的列
【发布时间】:2018-10-30 05:50:35
【问题描述】:

我正在关注这个answer,获得了 88 个赞,但它不再起作用了:

>>> df = pd.DataFrame(
     [['USA', 'Nevada', 'Las Vegas'],
      ['Brazil', 'Pernambuco', 'Recife']],
     columns=['Country', 'State', 'City']
 )
df['AllTogether'] = df['Country'].str.cat(df[['State', 'City']], sep=' - ')

我得到错误:

    raise ValueError("Did you mean to supply a `sep` keyword?")
ValueError: Did you mean to supply a `sep` keyword?

不确定自发布答案以来发生了什么变化。

我有 0.22.0 的熊猫版本。由于测试原因无法更新版本。

编辑: 我不是在寻找替代答案,但担心的是错误。

【问题讨论】:

  • 无法在 0.23.4 中重现。适合我
  • 预期输出是什么?您在寻找 df[['Country','State', 'City']].apply('-'.join, axis = 1)?
  • 是的,它是使用给定分隔符连接列,但我更关心错误而不是替代方法
  • 我认为他们在 0.23.4 版本中解决了这个问题

标签: python python-3.x pandas


【解决方案1】:

我能够在pandas '0.21.1' 中重现此错误,但它似乎是一个错误(@Wen 指出现在已在pandas 0.23.4 中修复)。无论如何,您似乎可以通过使用df[['State', 'City']].values 而不仅仅是df[['State', 'City']]通过提供np.array 而不是数据框(这不是正常行为,看到作为docs 状态,您可以将其传递给数据帧):

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

【讨论】:

  • 这可能会帮助使用旧版熊猫的人重新打开它。 +1
猜你喜欢
  • 2021-01-24
  • 2023-01-03
  • 1970-01-01
  • 2023-01-31
  • 1970-01-01
  • 2017-02-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多