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
没有意义。由于split
和expand
返回一个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