首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么pd.to_numeric‘`errors=’等同于‘`errors=’胁迫‘

为什么pd.to_numeric‘`errors=’等同于‘`errors=’胁迫‘
EN

Stack Overflow用户
提问于 2019-07-31 08:34:03
回答 2查看 11.3K关注 0票数 5

我在吃蟒蛇3.7和熊猫0.24.2

设置:

代码语言:javascript
复制
s = pd.Series(['10', '12', '15', '20', 'A', '31', 'C', 'D'])

In [36]: s
Out[36]:
0    10
1    12
2    15
3    20
4     A
5    31
6     C
7     D
dtype: object

to_numeric与errors='coerce'

代码语言:javascript
复制
pd.to_numeric(s, errors='coerce')

Out[37]:
0    10.0
1    12.0
2    15.0
3    20.0
4     NaN
5    31.0
6     NaN
7     NaN
dtype: float64

带有to_numeric的errors='' (空字符串)

代码语言:javascript
复制
pd.to_numeric(s, errors='')

Out[38]:
0    10.0
1    12.0
2    15.0
3    20.0
4     NaN
5    31.0
6     NaN
7     NaN
dtype: float64

to_numeric和errors='ljljalklag'。也就是说,随机字符串

代码语言:javascript
复制
pd.to_numeric(s, errors='ljljalklag')

Out[39]:
0    10.0
1    12.0
2    15.0
3    20.0
4     NaN
5    31.0
6     NaN
7     NaN
dtype: float64

换句话说,除了字符串raiseignore传递给pd.to_numericerrors参数以外的任何字符串都等同于errors='coerce'

这是一个或几个bug吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-07-31 18:28:53

在0.25.0版本中已经修正了这一点,以验证errors关键字(参见#26394)。

0.25.0中的新行为:

代码语言:javascript
复制
In [1]: import pandas as pd; pd.__version__
Out[1]: '0.25.0'

In [2]: pd.to_numeric([1, 'a', 2.2], errors='foo')
---------------------------------------------------------------------------
ValueError: invalid error value specified

在0.24.2中以前的行为:

代码语言:javascript
复制
In [1]: import pandas as pd; pd.__version__
Out[1]: '0.24.2'

In [2]: pd.to_numeric([1, 'a', 2.2], errors='foo')
Out[2]: array([1. , nan, 2.2])
票数 7
EN

Stack Overflow用户

发布于 2019-07-31 08:38:33

AFAIK,这是意图行为,考虑到源代码:

代码语言:javascript
复制
# pandas/core/tools/numeric.py
... 
coerce_numeric = errors not in ("ignore", "raise") # line 147
...

因此,它只检查errorsraise还是ignore,或者是默认的coerce

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57286501

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档