You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pandas 2.2.1中fillna填充布尔值触发警告,如何规范处理?

解决Pandas 2.2.1中fillna的FutureWarning问题

针对你遇到的警告,有几种符合新版Pandas规范的调整方式,推荐优先使用更简洁高效的方案:

方案1:直接用isin生成标记列(最推荐)

跳过合并后填充NaN的步骤,直接通过isin判断主数据的name是否在排除项列表中,直接生成布尔类型的excluded列,完全避免类型转换问题:

import pandas as pd
MainData = {'name':  ['apple', 'pear', 'orange', 'watermelon'],
            'other': ['blah' , 'blah', 'blah'  , 'blah']}
dfMainData = pd.DataFrame(MainData)
Exclusions = {'name':   ['pear'      , 'watermelon'],
              'reason': ['pears suck', 'too messy!']}
dfExclusions = pd.DataFrame(Exclusions)

# 直接生成excluded布尔列
dfMainData['excluded'] = dfMainData['name'].isin(dfExclusions['name'])
# 如需保留reason列,单独合并该列
dfMainData = dfMainData.merge(dfExclusions[['name', 'reason']], how='left', on='name')

方案2:按照警告提示使用infer_objects

如果坚持原有合并逻辑,在fillna后调用infer_objects(copy=False)显式转换类型,消除警告:

import pandas as pd
MainData = {'name':  ['apple', 'pear', 'orange', 'watermelon'],
            'other': ['blah' , 'blah', 'blah'  , 'blah']}
dfMainData = pd.DataFrame(MainData)
Exclusions = {'name':   ['pear'      , 'watermelon'],
              'reason': ['pears suck', 'too messy!']}
dfExclusions = pd.DataFrame(Exclusions)
dfExclusions['excluded'] = True

dfMainData = pd.merge(dfMainData, dfExclusions, how='left', on='name')
# 显式转换类型,替代隐式向下转换
dfMainData['excluded'] = dfMainData['excluded'].fillna(False).infer_objects(copy=False)

方案3:提前指定数据类型

在创建excluded列时就指定布尔类型,合并后填充False时避免类型歧义:

import pandas as pd
MainData = {'name':  ['apple', 'pear', 'orange', 'watermelon'],
            'other': ['blah' , 'blah', 'blah'  , 'blah']}
dfMainData = pd.DataFrame(MainData)
Exclusions = {'name':   ['pear'      , 'watermelon'],
              'reason': ['pears suck', 'too messy!']}
dfExclusions = pd.DataFrame(Exclusions)
# 显式指定excluded为布尔类型
dfExclusions['excluded'] = pd.Series([True]*len(dfExclusions), dtype='bool')

dfMainData = pd.merge(dfMainData, dfExclusions, how='left', on='name')
# 填充False,此时列类型为boolean,不会触发警告
dfMainData['excluded'] = dfMainData['excluded'].fillna(False)

说明

方案1不仅消除了警告,还简化了逻辑,执行效率更高;方案2和3则是在原有逻辑基础上调整,适配新版Pandas的类型转换规则。

内容的提问来源于stack exchange,提问作者user3246693

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 12:27:31