升级至pandas 2.1.0后出现两类FutureWarning,如何消除?
解决pandas 2.1.0升级后的两个FutureWarning
1. DataFrame拼接时的空/全NA列警告
该警告提示:拼接包含空或全NA列的DataFrame时,未来版本的dtype推断逻辑会发生变化。消除方法如下:
推荐方式:提前过滤空/全NA列
在执行pd.concat前,对每个待拼接的DataFrame移除全为NA或列名空的列:def filter_invalid_cols(df): # 保留非全NA且列名非空的列 valid_cols = ~(df.isna().all() | (df.columns.str.strip() == "")) return df.loc[:, valid_cols] # 过滤所有待拼接的DataFrame dfs_cleaned = [filter_invalid_cols(df) for df in dfs] df = pd.concat(dfs_cleaned)临时保留旧行为(不推荐,未来版本会失效)
通过设置pandas选项沿用旧的拼接逻辑:pd.set_option('future.no_silent_downcasting', False) df = pd.concat(dfs)
2. pyarrow的is_sparse方法弃用警告
该警告源于pyarrow旧版本与pandas 2.1.0的API不兼容,解决方法如下:
推荐方式:升级pyarrow到兼容版本
执行以下命令升级pyarrow(建议升级到13.0.0及以上版本):pip install --upgrade pyarrow临时屏蔽警告(无法升级时使用)
使用warnings模块过滤特定警告:import warnings warnings.filterwarnings( "ignore", category=FutureWarning, message=r"is_sparse is deprecated and will be removed in a future version\..*" )
内容的提问来源于stack exchange,提问作者Jacques
相关产品推荐
相关产品推荐

