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

如何按分组列表为DataFrame列批量添加对应后缀

代码修正方案

问题根因

  • 代码的后缀取值逻辑本身没有错误,出现多后缀叠加的核心原因是同一个DataFrame实例被多个分组列表共享:比如df2同时存在于cat_a和cat_b中,df1同时存在于cat_a和cat_c中,你对列名的修改是原地操作,同一个DataFrame被多次执行后缀追加,就会出现单列出多个后缀的问题。
  • 原有代码中suff=suffix是冗余语句,可以直接删除。

修正方案

方案1:保留原始DataFrame不变,不同分组的修改互不干扰

分组时先对每个DataFrame做深拷贝,避免共享实例,适合需要多份独立修改结果的场景:

import pandas as pd
import numpy as np

# 原始数据生成逻辑不变
df1, df2, df3, df4 = (pd.DataFrame(np.random.randint(0,10,size=(10, 2)), columns=('a', 'b')), 
                      pd.DataFrame(np.random.randint(0,10,size=(10, 2)), columns=('c', 'd')),
                      pd.DataFrame(np.random.randint(0,10,size=(10, 2)), columns=('e', 'f')),
                      pd.DataFrame(np.random.randint(0,10,size=(10, 2)), columns=('g', 'h')))

# 分组时对每个df做深拷贝,切断实例共享
cat_a = [df1.copy(), df2.copy()]
cat_b = [df3.copy(), df4.copy(), df2.copy()]
cat_c = [df1.copy()]

suffix =['group1', 'group2', 'group3']
dfs = [cat_a, cat_b, cat_c]

for group_idx, group_df_list in enumerate(dfs):
    current_suffix = suffix[group_idx]
    for df in group_df_list:
        df.columns = [f"{col}_{current_suffix}" for col in df.columns]

方案2:允许原地修改原始DataFrame

如果你的业务逻辑允许修改原始df,只需要调整分组列表,保证同一个DataFrame只属于一个分组即可,原有循环逻辑无需大幅改动。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 11:36:03