转换为 "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__
我这辈子都弄不明白为什么以前如此简单的东西不再有效了。通常我可能会将数据框列映射到字典并显示一些空值,因为它们在字典键中找不到。所以结果列将是 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__