在超过 100 列的数据框上,我希望 pandas (v1.4.2)自动地将所有列转换为“最佳”数据类型。根据文档df.convert_dtypes() or df.infer_objects()应该可以解决问题。考虑以下示例:
>>df = pd.DataFrame({"A":["1","2"], "C":["abc","bcd"]})
>>df
A C
0 1 abc
1 2 bcd
>>df.dtypes
A object
C object
dtype: object
>>df.convert_dtypes().dtypes
A string
C string
dtype: object
>>df.infer_objects().dtypes
A object
C object
dtype: object
为什么是专栏A
没有转换成int
?如果我尝试错误的 pandas 方法,有什么替代方法?
查看文档转换_dtypes(),似乎该方法进行了转换Object
to Int
正确但无法确定字符串对象是否是数字:
>>> df = pd.DataFrame(
{
"A": pd.Series([3, 4, 5], dtype=np.dtype("O")),
"B": pd.Series(["3", "4", "5"], dtype=np.dtype("O")),
"C": pd.Series(["abc","bcd"], dtype=np.dtype("O"))
}
)
>>> df.dtypes
A object
B object
C object
dtype: object
>> df.convert_dtypes().dtypes
A Int64
B string
C string
dtype: object
您可以使用以下方法作为转换的解决方法:
>>> df.convert_dtypes().apply(pd.to_numeric, errors="ignore").dtypes
A Int64
B int64
C object
dtype: object
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)