我有以下数据帧,我想将列’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.在进行各种数值分析时(例如,均值等),您需要小心过滤掉这些数据.