pandas NaN to None

当使用pandas DataFrame时,若需将NaN转换为None以适应JSON传输,需根据pandas版本采取不同策略。对于1.3.0及以上版本,可直接使用replace方法;而对于早期版本,则需借助where方法。注意在1.3.0版本后,where方法的other参数要求可调用,这可能导致版本升级后的代码错误。
部署运行你感兴趣的模型镜像

pandas的DataFrame取用数据十分便利,但是空值存储为NaN(np.nan),在json需转换为None进行数据传递,记录转换方法。

if version.parse(pd.__version__) >= version.parse('1.3.0'):
    df = df.replace({np.nan: None})
else:
    df = df.where(df.notnull(), None)

pandas版本高于1.3.0时,通过replace方法,置换NaN和None,replace是相互的,dataframe中的NaN会被转换为None,而其中的None会被转换为NaN。确保数据更改的一致性可以加一句:

df = df.fillna(np.nan)
df = df.replace({np.nan: None})

pandas版本低于1.3.0时,利用where方法,保留不为空的值,其他置为None。

df.where(cond, other),cond:保留项需满足的条件,other:不满足条件的用other值替换。

pandas1.3.0之后对where的other进行了调整,other的值必须是可调用的。这就很烦,之前写的代码,换个版本通通报错了,查了半天才发现函数变了😫。

您可能感兴趣的与本文相关的镜像

ACE-Step

ACE-Step

音乐合成
ACE-Step

ACE-Step是由中国团队阶跃星辰(StepFun)与ACE Studio联手打造的开源音乐生成模型。 它拥有3.5B参数量,支持快速高质量生成、强可控性和易于拓展的特点。 最厉害的是,它可以生成多种语言的歌曲,包括但不限于中文、英文、日文等19种语言

Pandas 中,将 NaN 值替换为 0 是一个常见的数据预处理任务,可以使用 `fillna()` 或 `replace()` 方法来实现。以下是具体的实现方式: 使用 `fillna()` 方法可以高效地将 DataFrame 中的所有 NaN 值替换为 0。此方法通常用于填充缺失值,支持直接指定填充值,例如: ```python df.fillna(0, inplace=True) ``` 上述代码中,参数 `0` 表示将 NaN 替换为 0,`inplace=True` 表示直接在原始 DataFrame 上进行修改 [^1]。 如果希望通过 `replace()` 方法替换 NaN 值,也可以使用如下代码: ```python df.replace(np.nan, 0, inplace=True) ``` `replace()` 方法通常用于替换多种类型的值,包括字符串、正则表达式、列表或字典中的值,因此也可以用来替换 NaN 值 。 在某些情况下,NaN 值可能与其他异常值(如无穷大值 `np.inf`)混合在一起。可以先通过 `replace()` 方法将无穷大值替换为 NaN,然后再使用 `fillna()` 填充 NaN 值: ```python df.replace([np.inf, -np.inf], np.nan, inplace=True) # 将无穷大值替换为 NaN df.fillna(0, inplace=True) # 再次将 NaN 替换为 0 ``` 此外,在处理数据时,可能需要将 NaN 转换为 None 以适应数据库插入的需求。可以通过以下代码实现: ```python df.replace(np.nan, None, inplace=True) ``` 这种方法可以将 NaN 值转换为 Python 中的 `None` 类型,从而更方便地插入数据库 [^3]。 如果需要检查 DataFrame 中是否存在 NaN 值,可以使用 `isna()` 或 `isnull()` 方法: ```python df.isna().sum() ``` 该方法会返回每列中 NaN 值的数量,帮助更好地了解数据缺失情况 [^4]。 ### 常见问题 在实际数据处理过程中,除了替换 NaN 值为 0,还可以根据数据的分布选择均值、中位数或其他统计方法进行填充。例如,使用列的均值填充 NaN 值: ```python df.fillna(df.mean(), inplace=True) ``` 这种方法适用于数据缺失较少的情况,可以减少对整体数据分布的影响 [^4]。
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值