如何在Pandas中为前N列添加后缀?
给Pandas DataFrame的前N列添加后缀
问题场景
已知df.add_suffix("_x")可给所有列添加后缀,但需仅为前N列(例如前3列)添加后缀,其余列保持原名。
原始代码(全列添加后缀)
import pandas as pd df = pd.DataFrame( {"name" : ["John","Alex","Kate","Martin"], "surname" : ["Smith","Morgan","King","Cole"], "job": ["Engineer","Dentist","Coach","Teacher"],"Age":[25,20,25,30], "Id": [1,2,3,4]}) # 给所有列添加后缀 df.add_suffix("_x")
实现目标的两种方法
方法1:拆分列后合并(不修改原DataFrame)
提取前N列添加后缀,再与剩余列拼接,保留原DataFrame不变:
import pandas as pd df = pd.DataFrame( {"name" : ["John","Alex","Kate","Martin"], "surname" : ["Smith","Morgan","King","Cole"], "job": ["Engineer","Dentist","Coach","Teacher"],"Age":[25,20,25,30], "Id": [1,2,3,4]}) N = 3 # 指定要添加后缀的前N列数 # 提取前N列并添加后缀 first_n_cols = df.iloc[:, :N].add_suffix("_x") # 提取剩余列 rest_cols = df.iloc[:, N:] # 横向合并两部分 result_df = pd.concat([first_n_cols, rest_cols], axis=1) print(result_df)
方法2:直接修改列名(修改原DataFrame)
通过列表推导式遍历列名,仅为前N列添加后缀:
import pandas as pd df = pd.DataFrame( {"name" : ["John","Alex","Kate","Martin"], "surname" : ["Smith","Morgan","King","Cole"], "job": ["Engineer","Dentist","Coach","Teacher"],"Age":[25,20,25,30], "Id": [1,2,3,4]}) N = 3 # 指定要添加后缀的前N列数 # 生成新列名列表 new_columns = [f"{col}_x" if idx < N else col for idx, col in enumerate(df.columns)] # 替换原列名 df.columns = new_columns print(df)
输出结果(两种方法均得到以下结果)
name_x surname_x job_x Age Id 0 John Smith Engineer 25 1 1 Alex Morgan Dentist 20 2 2 Kate King Coach 25 3 3 Martin Cole Teacher 30 4
内容的提问来源于stack exchange,提问作者trying_to_be_a_dev
相关产品推荐
相关产品推荐

