首页 > 解决方案 > 从浮点数(本机浮点数或 numpy.float64)转换为整数不起作用

问题描述

我有一个加载了浮点数和 NaN 的数据框。我需要将所有小数/浮点数转换为整数。我检查了所有类型都是 numpy.float64 但我转换为整数不起作用。这就是数据框的样子。

在此处输入图像描述

目前,我正在使用此代码尝试将所有非 NaN 更改为整数,但它不会用数据帧中的整数替换浮点数。

for i, row in df_cn.iterrows():
    for col in df_cn.columns:
        cell = row[col]
        if isinstance(cell, np.float64) and np.isnan(cell) == False:
            cell = int(cell)
            df_cn.loc[i,col] = cell

这个for循环不会用整数替换浮点数,即使我使用了df_cn.loc [],我也会收到这个错误:

在此处输入图像描述

我不确定我做错了什么,我做了一个类似的过程,将字符串转换为具有类似逻辑的日期时间,结果很好。也许我错过了一些非常明显的东西。我将非常感谢帮助。

标签: pythonpandasnumpyfloating-pointinteger

解决方案


如果您的数据框中只有数字,您可以尝试:

df_c = df.applymap(np.int64)

但是,如果您的数据框可能包含非数字值,则会导致错误。

如果您仍然喜欢使用自己的代码,请尝试以下操作:

for i, row in df_cn.iterrows():
for col in df_cn.columns:
    cell = row[col]
    if isinstance(cell, np.float) and not np.isnan(cell):
        cell = int(cell)
        df_cn.loc[i,col] = cell

推荐阅读