【发布时间】:2019-05-09 16:04:38
【问题描述】:
我想将一列转换为整数,但问题是该列包含缺失值。该列可以很好地转换为浮点数,但不能转换为整数。
示例代码:
d2 = {'location': ['NY', 'NY', 'PA', 'NY', 'PA', 'PA', 'NY'], 'dep_name': ['hr', 'mk', 'fin', 'fin', 'hr', 'fin', 'fin'], 'Duration_of_Employment' : [10, 5, 9, 8, 2, 4, 7], 'Salary' : [50000, 86000,25000, 73000, 28000, 60000, 40000], 'Days_Since_Last_Promotion': ['61', '35', '25', '98', 'NaN', '45', '22']}
df2 = pd.DataFrame(data = d2)
df2['xy'] = df2['Days_Since_Last_Promotion'].astype(float)
df2['Months_Since_Last_Promotion'] = df2['xy'] // 30
现在“Months_Since_Last_Promotion”是浮点类型。但是当我尝试将其转换为整数时,出现以下错误。
df2['Months_Since_Last_Promotion'] = df2['Months_Since_Last_Promotion'].astype(int)
ValueError: 无法将 NA 转换为整数
从错误中,我认为它是由于缺少值 Nan 并尝试解决此问题。但它没有工作,'Months_Since_Last_Promotion' 仍然显示为 float64。
df2.loc[df2['Months_Since_Last_Promotion'].notnull(), 'Months_Since_Last_Promotion'] = df2.loc[df2['Months_Since_Last_Promotion'].notnull(), 'Months_Since_Last_Promotion'].astype(int)
注意:我不能使用 fillna 来替换 NaN。目标是将列保持为整数。
【问题讨论】:
-
不知道为什么你不能使用fillna,你能详细说明一下吗?
-
要求是我们不想要 0 或 -1 或类似的东西来代替 NaN。但我想在最坏的情况下我会走那条路
标签: python python-3.x pandas integer