熊猫报告系列是小数时的对象

Lov*_*eow 3 python types pandas

我需要一种自动可靠的方法来查找 Pandas 数据框中每一列的数据类型。我一直在使用 .dtype() 但注意到它有一些意想不到的东西。

考虑这个 10 行数据框:

df['a']
Out[6]: 
0    250.00
1    750.00
2      0.00
3      0.00
4      0.00
5      0.00
6      0.00
7      0.00
8      0.00
9      0.00
Name: a, dtype: object

type(df['a'][0])
Out[9]: decimal.Decimal
Run Code Online (Sandbox Code Playgroud)

当每个条目都是小数时,为什么整个列的 dtype 都是“对象”?我真的需要它来表示十进制或浮点数或数字。任何帮助,将不胜感激!

EdC*_*ica 5

这不是错误,而是由于numpy dtype表示:https://docs.scipy.org/doc/numpy/reference/arrays.scalars.html。

基本上,由于Decimal不是原则内置类型,因此object即使每个单元格的实际类型仍然是Decimal.

建议在可能的情况下使用内置标量类型,在这种情况下float64,因为算术运算不太可能被向量化,即使类型很可能是数字。

当您存储str或datetime.date值时观察到同样的情况,dtypeobject用于这些。

  • 数据来自 API。我可以修改十进制的列,但是当 pandas 告诉我它们都是“对象”时,我如何知道哪些是十进制,哪些是字符串?我可以检查该系列的前几个元素,但我希望有一种不那么老套的方式:) (2认同)