用分隔符连接数据框的列

时间:2018-10-29 21:31:15

标签: python python-3.x pandas

我正在对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的熊猫版本。由于测试原因,我无法更新版本。

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

1 个答案:

答案 0 :(得分:4)

我能够在var inspect = stdout.inspect(); functionUnderTest(function() { inspect.restore(); assert.deepEqual(inspect.output, [ "foo\n" ]); }); 中重现此错误,但它似乎是一个错误(@Wen指出的错误现已在pandas '0.21.1'中修复)。无论如何,您似乎可以通过使用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