是否可以将pandas系列值转换为特定类型并设置那些无法转换的元素?
我找到Series.astype(dtype, copy=True, raise_on_error=True)并设置raise_on_error=True为避免异常,但这不会将无效项设置为na ...
更新
更确切地说,我想指定一个列应转换为的类型.对于包含值[123, 'abc', '2010-01-01', 1.3]和类型转换的系列float,我希望[123.0, nan, nan, 1.3]结果是,如果datetime选择,则只series[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
Run Code Online (Sandbox Code Playgroud)
更新:在最近的大熊猫中,该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
Run Code Online (Sandbox Code Playgroud)
这不是那么强大/神奇convert_objects(它也适用于DataFrames),但效果很好,在这种情况下更明确.
阅读文档的对象转换部分,其中to_*提到了其他功能.
| 归档时间: |
|
| 查看次数: |
1865 次 |
| 最近记录: |