微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

python – Pandas转换类型并将无效值设置为na

是否可以将pandas系列值转换为特定类型并设置那些无法转换的元素?

我发现了Series.astype(dtype,copy = True,raise_on_error = True)并设置了raise_on_error = True以避免异常,但这不会将无效项设置为na …

更新

更确切地说,我想指定一个列应转换为的类型.对于包含值[123,’abc’,’2010-01-01′,1.3]和类型转换为float的系列,如果选择datetime,我希望[123.0,nan,nan,1.3]为结果,只有系列[2]才包含有效的日期时间值. convert_objects不允许这种灵活性,恕我直言.

解决方法:

我想你可能会有更好的运气convert_objects

In [11]: s = pd.Series(['1', '2', 'a'])

In [12]: s.astype(int, raise_on_error=False)  # just returns s
Out[12]:
0    1
1    2
2    a
dtype: object

In [13]: s.convert_objects(convert_numeric=True)
Out[13]:
0     1
1     2
2   NaN
dtype: float64

更新:在最近的pandas中,不推荐使用convert_objects方法.
赞成pd.to_numeric

In [21]: pd.to_numeric(s, errors='coerce')
Out[21]:
0    1.0
1    2.0
2    NaN
dtype: float64

这不像convert_objects那样强大/神奇(它也适用于DataFrames),但效果很好,在这种情况下更明确.
阅读object conversion section of the docs,其中提到了其他to_ *函数.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐