【问题标题】:Pandas FutureWarning: Columnar iteration over characters will be deprecated in future releasesPandas FutureWarning:字符的列迭代将在未来版本中被弃用
【发布时间】:2020-08-02 10:02:49
【问题描述】:

我有一个现有的解决方案,可以将包含一列的数据框拆分为两列。

df['A'], df['B'] = df['AB'].str.split(' ', 1).str

最近收到如下警告FutureWarning: Columnar iteration over characters will be deprecated in future releases.

如何解决这个警告?

我正在使用 python 3.7

【问题讨论】:

标签: python python-3.x pandas dataframe


【解决方案1】:

这并不完全正确,加上尾随的.str 没有意义。由于splitexpand 返回一个DataFrame,这更容易:

df[['A', 'B']] = df['AB'].str.split(' ', n=1, expand=True)

没有expand 的现有方法会返回一个带有列列表的系列。我不确定哪个版本的 pandas 可以与您的代码一起使用,但 AFAIK 您今天需要对其进行一些调整才能与 pandas (>= 1.0) 一起使用。以这种方式分配很乏味,但仍然可以。

s = df['AB'].str.split(' ', n=1)
df['A'], df['B'] = s.str[0], s.str[1]

我更喜欢expand 解决方案,因为它的行更短。

【讨论】:

  • 如果我的数据框有两列以上,第一个答案是否有效,即我是否会使用 df[['a','b']] = 松开其余列
  • 在 pandas 0.16 之前,尾随 str 方法是 AFAIK,这是执行此操作的主要方法,因此现在可能有很多代码会收到此警告。
【解决方案2】:

或者我们做

df['A'], df['B']=zip(*df['AB'].str.split(' ').tolist())
df
    AB  A  B
0  A B  A  B
1  A B  A  B
2  A B  A  B
3  A B  A  B

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 2018-11-29
    • 2021-06-24
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多