如何按分组列表为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
相关产品推荐
相关产品推荐

