广播为“ Int64”可为空的整数类型似乎不再起作用

问题描述 投票:1回答:1

我无法为自己的一生弄清为什么原来如此简单的东西不再起作用。通常,我可能会将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)转换为整数

python-3.x pandas numpy nullable
1个回答
0
投票

在我的机器上工作正常:

<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__
© www.soinside.com 2019 - 2024. All rights reserved.