如何将字典对应值追加至Pandas DataFrame原有列名后
Pandas 列名追加映射值实现方法
问题场景
- 初始测试 DataFrame
df结构如下:
a b c 0 x x x 1 x x x 2 x x x
- 现有列名映射字典:
headers = {'a' : '3.14', 'b' : '6.67', 'c' : '8.31'}
- 直接调用
df = df.rename(headers)会完全替换原有列名,输出列名为3.14、6.67、8.31,不符合需求。我们需要保留原列名,仅将字典对应值追加到原列名之后,最终效果如下:
a 3.14 b 6.67 c 8.31 0 x x x 1 x x x 2 x x x
实现代码
最简洁的实现方式是给rename方法的columns参数传入处理函数,对每个列名做拼接:
df = df.rename(columns=lambda col: f"{col} {headers[col]}")
如果字典无法覆盖所有列名,为了避免KeyError,可以改成容错写法,未匹配到的列不追加内容:
df = df.rename(columns=lambda col: f"{col} {headers.get(col, '')}".strip())
你也可以直接通过列表推导式生成新列名赋值,效果完全一致:
df.columns = [f"{col} {headers[col]}" for col in df.columns]
运行上述任意一段代码,即可得到目标格式的列名,不会替换原有列名内容。
内容的提问来源于stack exchange,提问作者macxpat
相关产品推荐
相关产品推荐

