Pandas自动推断最佳dtype: str到int不工作



使用>我希望pandas (v1.4.2)自动将所有列转换为"最佳"列。dtype。根据文档,df.convert_dtypes()或df. inter_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?如果我尝试了错误的熊猫方法,有什么替代方法吗?

查看convert_dtypes()的文档,似乎该方法正确地从Object转换为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

相关内容

  • 没有找到相关文章

最新更新