为什么to_numeric()将str转换为float而不是int?

时间:2020-01-09 02:01:36

标签: python pandas

小白在这里。

我有一个pandas数据框,并且我试图将一列数字从字符串类型转换为整数。但是,当我使用to_numeric()时,它会转换为浮点数。

我正在使用Jupyter Notebook。

citydata.tcad_id

结果

0      0206180115

2      0125050304

3      0225050137

4      0124000601

         ...    
995    0250300107

996    0217230301

997    0203030703

998    0135070323

999    0204160717

Name: tcad_id, Length: 1000, dtype: object

type(citydata.tcad_id[0])

显示前(和后)项是...

str

所以我尝试了

pd.to_numeric(citydata.tcad_id, downcast='integer', errors='coerce')

但这会导致

0      206180115.0

1      419120319.0

2      125050304.0

3      225050137.0

4      124000601.0

       ...     

995    250300107.0

996    217230301.0

997    203030703.0

998    135070323.0

999    204160717.0

Name: tcad_id, Length: 1000, dtype: float64

我需要它们为整数,以便可以与另一个整数列表进行比较。

帮助!

2 个答案:

答案 0 :(得分:3)

如果您查看文档here,则会看到以下内容:

The default return dtype is float64 or int64 depending on the data supplied. Use the downcast parameter to obtain other dtypes.

因此,熊猫似乎已决定将您的数据投射到float64中。使用downcast:'integer'获取整数值。

答案 1 :(得分:0)

可能为时已晚,但是您的数据中是否存在“ nan”或无穷大?这就是我的问题。您可以尝试做:

__contains__