FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated

问题:

例如在使用

ser1 = pd.Series([False, True, float("nan")])
ser1 = ser1.fillna(False)

时会出现下述警告。

FutureWarning: Downcasting object dtype arrays on .fillna, .ffill, .bfill is deprecated and will change in a future version. Call result.infer_objects(copy=False) instead. To opt-in to the future behavior, set pd.set_option('future.no_silent_downcasting', True)

FutureWarning:已弃用在.fill、.fill、.bill上向下转换对象dtype数组,并将在未来的版本中进行更改。改为调用result.infer_objects(copy=False)。要选择加入未来的行为,请设置pd.set_option('future.nosilent_downcasting',True)

原因:

当前Pandas 在处理 object 类型数组(通常是字符串类型)时fillna()ffill()bfill() 等方法会自动将 object 类型数组向下转换为更具体的类型,比如布尔型、整数型或浮点型。这种自动类型转换可能会在未来版本中被移除,导致不同的行为。

解决方法:

with pd.option_context("future.no_silent_downcasting", True):
    ser1 = ser1.fillna(False).infer_objects(copy=False)

注意不要直接使用  pd.set_option('future.nosilent_downcasting',True) ,这可能会隐藏其他地方的问题。

不起作用的做法:

ser1.infer_objects(copy=False).fillna(False)

参考:

https://stackoverflow.com/questions/77900971/pandas-futurewarning-downcasting-object-dtype-arrays-on-fillna-ffill-bfill

QST: How to solve pandas (2.2.0) "FutureWarning: Downcasting behavior in `replace` is deprecated" on a Series? · Issue #57734 · pandas-dev/pandas · GitHub

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值