在Pandas数据框中重命名选定的列。

3
假设我有以下数据框:
import pandas as pd
raw_data = {'col1': [23,45,21,45,23],'col2': [3,4,5,22,3],'col3': ['y1', 'y2', 'y3', 'y1', 'y2'],'col4': ['x1', 'x2', 'x3', 'x1', 'x2']}
df = pd.DataFrame(raw_data, columns = ['col1','col2','col3','col4','col5'])

现在我想以编程的方式给每个列名称添加前缀'PRE-',但'col2''col4'除外。
是否有可用于实现此目的的方法/函数?
感谢您的指导。
2个回答

4
使用 lambda 函数和 DataFrame.rename 重命名 DataFrame:
df = df.rename(columns = lambda x: f'PRE-{x}' if x not in ['col2','col4'] else x)
print (df)
   PRE-col1  col2 PRE-col3 col4 PRE-col5
0        23     3       y1   x1      NaN
1        45     4       y2   x2      NaN
2        21     5       y3   x3      NaN
3        45    22       y1   x1      NaN
4        23     3       y2   x2      NaN

谢谢。如果我有一个变量中的前缀词,例如 usePrefix = 'PRE-',那么我该如何修改上面的代码? - Bogaso
1
@Bogaso - 然后将 f'PRE-{x}' 更改为 f'{usePrefix}{x}' - jezrael

3
我们还可以使用简单的列表推导式:
df.columns = [('' if col in ('col2','col4') else 'PRE-') + col for col in df.columns]

输出:

   PRE-col1  col2 PRE-col3 col4 PRE-col5
0        23     3       y1   x1      NaN
1        45     4       y2   x2      NaN
2        21     5       y3   x3      NaN
3        45    22       y1   x1      NaN
4        23     3       y2   x2      NaN

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接