python – 将float转换为int并保留空值

我有以下数据帧,我想将列’b’中的值转换为整数

    a   b       c
0   1   NaN     3
1   5   7200.0  20
2   5   580.0   20

以下代码抛出异常
“ValueError:无法将NA转换为整数”

df['b'] = df['b'].astype(int)

我如何只将浮点数转换为int并保留空值?

最佳答案 np.NaN只是浮点数,因此必须将其删除才能创建整数pd.Series. Jeon的建议工作很好如果0不是df [‘b’]中的有效值.例如:

import pandas as pd
import numpy as np

df = pd.DataFrame({'a': [1, 5, 5], 'b': [np.NaN, 7200.0, 580.0], 'c': [3, 20, 20]})
print(df, '\n\n')

df['b'] = np.nan_to_num(df['b']).astype(int)

print(df)

如果有有效0,那么你可以先用一些唯一值(例如-999999999)替换它们,即上面的转换,然后将这些唯一值替换为0.

无论哪种方式,你必须记住你有0的地方曾经有过NaN.在进行各种数值分析时(例如,均值等),您需要小心过滤掉这些数据.

点赞