Pandas DataFrame循环append采样数据遇弃用警告,求替代方案
解决Pandas append方法弃用警告问题
原代码及错误提示
原代码:
sampled_df = pd.DataFrame(columns=df_concat.columns) for Stratacluster, sample_size in res.items(): Stratacluster_data = df_concat[df_concat['Strata Cluster'] == Stratacluster] sample = Stratacluster_data.sample(n=sample_size, random_state=42) sampled_df = sampled_df.append(sample)
错误提示:
FutureWarning: The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
修改方案
改用pd.concat替代循环append的方式,先把所有采样结果收集到列表,再一次性合并,代码如下:
# 创建列表存储各集群的采样结果 sample_list = [] for stratacluster, sample_size in res.items(): stratacluster_data = df_concat[df_concat['Strata Cluster'] == stratacluster] sample = stratacluster_data.sample(n=sample_size, random_state=42) sample_list.append(sample) # 一次性合并所有采样数据 sampled_df = pd.concat(sample_list, ignore_index=True)
说明
- 避免循环中反复调用
append(每次调用都会生成新的DataFrame,效率低且触发弃用警告) ignore_index=True会重置合并后的DataFrame索引,避免原索引重复或混乱的问题- 这是Pandas官方推荐的替代方案,完全适配新版本API要求
内容的提问来源于stack exchange,提问作者mahesh purbia
相关产品推荐
相关产品推荐

