Pandas FutureWarning:字符的列迭代将在未来版本中被弃用

Posted

技术标签:

【中文标题】Pandas FutureWarning:字符的列迭代将在未来版本中被弃用【英文标题】:Pandas FutureWarning: Columnar iteration over characters will be deprecated in future releases 【发布时间】: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

【问题讨论】:

相关:***.com/questions/14745022/… 【参考方案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

【讨论】:

以上是关于Pandas FutureWarning:字符的列迭代将在未来版本中被弃用的主要内容,如果未能解决你的问题,请参考以下文章

从 Pandas 聚合中重命名结果列(“FutureWarning:不推荐使用带有重命名的字典”)

pandas 错误提醒:FutureWarning: elementwise comparison failed;

FutureWarning: pandas.Int64Index is deprecated and will be removed ... in a future version. 解决方法

FutureWarning: pandas.Int64Index is deprecated and will be removed ... in a future version. 解决方法

已解决FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future

Pandas:从带有字符串的列创建词云