将 Pandas DataFrame 中的列类型更改为 int64

Changing Column Type in Pandas DataFrame to int64

我正在尝试使用 .map().

在 DataFrame 中将列的数据类型从 type: object 更改为 type: int64
   df['one'] = df['one'].map(convert_to_int_with_error)

这是我的函数:

def convert_to_int_with_error(x):
    if not x in ['', None, ' ']:
        try:
            return np.int64(x)
        except ValueError as e:
            print(e)
            return None
    else:
        return None

    if not type(x) == np.int64():
        print("Not int64")
        sys.exit()

这已成功完成。但是,当我在完成后检查数据类型时,它恢复为 type: float:

print("%s is a %s after converting" % (key, df['one'].dtype))

我认为问题是您的问题值从 None 转换为 NaN,因此 int 被转换为 float - 请参阅 docs

相反 map 您可以使用带有参数 errors='coerce'to_numeric 将有问题的值转换为 NaN:

df['one'] = pd.to_numeric(df['one'], errors='coerce')