一个奇怪的事情-我有一个数据框架,我们叫它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