我无法为自己的一生弄清为什么原来如此简单的东西不再起作用。通常,我可能会将dataframe列映射到字典,并出现一些空值,因为在字典键中找不到它们。因此,结果列将为浮点数+空值。通常,我将.astype("Int64")
和boob进行转换,现在非空值现在是int而不是浮点数,其他所有内容都没有改变。
现在,我遇到了以下问题:我处理我的数据,使用Int64转换,通过了接受测试,但由于在这些列中发现浮点数,因此稍后管道中的数据部署失败。
只是为了确保我不发疯,我打开了jupyter笔记本,并初始化了一个基本数据帧,将其映射到字典中某些字典中不存在某些数据帧值的字典,然后将其强制转换为“ Int64” ... ..而且我仍然很注意这个问题!!这是怎么回事?我敢肯定这曾经很简单。...
df = pd.DataFrame({"keys": [5, 10, 15, 20]})
df["after_mapping"] = df["keys"].map({1: 0, 2: 2, 5: 25, 15: 305})
df["after_mapping"] = df["after_mapping"].astype("Int64")
ValueError:无法将非有限值(NA或inf)转换为整数
在我的机器上工作正常:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 keys 4 non-null int64
1 after_mapping 2 non-null Int64
dtypes: Int64(1), int64(1)
memory usage: 196.0 bytes
您确定您的版本号吗?
pd.__version__