在Lambda中用Pandas转字符串列为整数:空字符串转Null报错问题
解决Pandas转换含空字符串的字符串列到整数(带Null)的问题
你的报错原因是:直接用astype(int)时,空字符串会被转换为NaN(浮点数类型的缺失值),而普通的整数类型(int)不支持存储缺失值,所以触发报错。要实现需求,需要使用Pandas的可空整数类型(Int64,注意大写的I),配合缺失值转换处理,具体有两种可行方案:
方案1:先替换空串为可空缺失值,再转类型
import pandas as pd # 假设df是从OpenSearch获取的数据集 df['units'] = df['units'].replace('', pd.NA).astype('Int64')
- 先用
replace('', pd.NA)把空字符串替换为Pandas标准的可空缺失值pd.NA - 再用
astype('Int64')转换为支持缺失值的整数类型,最终结果里空串对应的就是Null,数字字符串转为整数
方案2:用pd.to_numeric自动处理转换
import pandas as pd df['units'] = pd.to_numeric(df['units'], errors='coerce').astype('Int64')
pd.to_numeric会尝试把字符串转为数字,errors='coerce'参数会把无法转换的内容(比如空串)转为NaN- 再转成
Int64类型,将NaN转为Pandas支持的Null,同时保留整数类型
这两种方法都能满足你的需求,在AWS Lambda环境中,只要使用的Pandas版本≥0.24.0(当前Lambda默认环境的Pandas版本已满足),就可以正常使用Int64可空类型。
内容的提问来源于stack exchange,提问作者Sharayu Dhamale
相关产品推荐
相关产品推荐

