转换为 "Int64" 可为 null 的整数类型似乎不再有效

casting as "Int64" nullable integer type no longer seems to work

我这辈子都弄不明白为什么以前如此简单的东西不再有效了。通常我可能会将数据框列映射到字典并显示一些空值,因为它们在字典键中找不到。所以结果列将是 floats + null。通常我转换 .astype("Int64") 和 boob,非空值现在是整数而不是浮点数,其他所有内容都保持不变。

现在我 运行 遇到以下问题:我处理我的数据,使用 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: Cannot convert non-finite values (NA or inf) to integer

在我的机器上运行良好:

<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__