截断字符串中的十进制数



一个奇怪的事情-我有一个数据框架,我们叫它ID。在导入xlsx源文件时,我执行.astype({"ID_1": str, "ID_2": str})

然而,例如,我得到的不是10300,而是10300.0。然后,我得到string "nan"。

为了解决这两个问题,我做了这个垃圾:

my_df['ID_1'].replace(['None', 'nan'], np.nan, inplace=True)
my_df[my_df['ID_1'].notnull()].ID_1.astype(float).astype(int).astype(str)

结果我仍然有这些10300.0有什么想法如何解决这些问题吗?我可以在导入数据时将其保留为float,而不是。astype,但它不会改变任何东西。

问题是int不能表示NaN的值,所以pandas将列转换为float

这是一个常见的缺陷,因为缺少数据的其他行可能会改变给定行的结果。

但是,您可以选择一个特定的pandas类型来表示它是一个缺少值的整数,请参阅将包含nan的pandas列转换为dtype ' int ',特别是链接https://pandas.pydata.org/pandas-docs/stable/user_guide/integer_na.html

相关内容

  • 没有找到相关文章

最新更新