如何在Pandas DataFrame中重命名含'F'的列并保留F+数字格式
解决方案
你可以通过正则表达式结合pandas的列名处理方法实现需求,只修改包含'F'的列,提取其中F+数字的部分作为新列名,具体实现如下:
import pandas as pd import re # 你的原始DataFrame df1 = pd.DataFrame({'Name' : ['Jake', 'Nate', 'Max', 'Alex', 'Lex', 'Kat', 'Nate', 'Jake'], 'textBefore F1: textAfter' : [1, 2, 3, 4, 5, 6, 7, 8], 'textBefore F2: textAfter' : [8, 4, 2, 7, 9, 6, 5, 1], 'textBefore F3: textAfter' : [9, 8, 5, 4, 6, 3, 2, 5], 'Color' : ['red', 'blue', 'yellow', 'balck', 'purple', 'pink', 'orange', 'green'],}) # 方法一:用函数配合rename修改列名 def rename_target_col(col_name): # 匹配F后跟数字的片段 match_result = re.search(r'F\d+', col_name) if match_result: return match_result.group() # 不包含F的列保留原名 return col_name df1.rename(columns=rename_target_col, inplace=True) # 查看修改后的列名 print(df1.columns)
代码说明
re.search(r'F\d+', col_name):正则表达式F\d+会精准匹配列名中F后接一个或多个数字的部分,比如从textBefore F1: textAfter中提取出F1。inplace=True表示直接在原DataFrame上修改;如果不想改动原数据,可以去掉该参数,将结果赋值给新变量(如new_df = df1.rename(columns=rename_target_col))。
更简洁的写法(列表推导式)
如果不想单独定义函数,也可以用一行代码完成:
import re df1.columns = [re.search(r'F\d+', col).group() if 'F' in col else col for col in df1.columns]
逻辑和上面一致:遍历所有列名,包含'F'的列提取目标片段,其余列保持原名。
内容的提问来源于stack exchange,提问作者Mario
相关产品推荐
相关产品推荐

