如何在Pandas指定列的每个值末尾添加带括号的列名
Pandas 批量为指定列的每个值添加带列名的后缀
原始DataFrame
date col1 col2 col3 col4 0 4-4-22 cat ginger gentle placed 1 4-4-22 dog golden wild not placed 2 4-4-22 fish black domest not placed 3 4-4-22 dog brown gentle placed
需求说明
给定列名列表 lst = ['col2', 'col4'],需要为列表中指定列的每个值末尾追加格式为(列名)的后缀,最终得到如下结果:
期望输出
date col1 col2 col3 col4 0 4-4-22 cat ginger (col2) gentle placed (col4) 1 4-4-22 dog golden (col2) wild not placed (col4) 2 4-4-22 fish black (col2) domest not placed (col4) 3 4-4-22 dog brown (col2) gentle placed (col4)
解决方案
方式一:循环遍历处理(直观易懂)
通过循环目标列列表,将每个列的字符串值与带括号的列名直接拼接:
import pandas as pd # 构造原始DataFrame df = pd.DataFrame({ 'date': ['4-4-22']*4, 'col1': ['cat', 'dog', 'fish', 'dog'], 'col2': ['ginger', 'golden', 'black', 'brown'], 'col3': ['gentle', 'wild', 'domest', 'gentle'], 'col4': ['placed', 'not placed', 'not placed', 'placed'] }) lst = ['col2', 'col4'] # 批量处理目标列 for col in lst: df[col] = df[col].astype(str) + f' ({col})' print(df)
方式二:apply方法(简洁高效)
利用apply方法对目标列批量处理,代码更紧凑:
import pandas as pd # 构造原始DataFrame(同上) df = pd.DataFrame({ 'date': ['4-4-22']*4, 'col1': ['cat', 'dog', 'fish', 'dog'], 'col2': ['ginger', 'golden', 'black', 'brown'], 'col3': ['gentle', 'wild', 'domest', 'gentle'], 'col4': ['placed', 'not placed', 'not placed', 'placed'] }) lst = ['col2', 'col4'] # 批量拼接后缀 df[lst] = df[lst].apply(lambda x: x.astype(str) + f' ({x.name})') print(df)
两种方式都能实现需求,可根据个人习惯选择。
内容的提问来源于stack exchange,提问作者user18334254
相关产品推荐
相关产品推荐

