使用字符串函数重命名列标签所需的映射是什么?
例如这适用于所有列:
df.rename(columns=str.upper)
但是随着
df.rename(columns={'Col 2': str.upper})
生成的标签是:
<method 'upper' of 'str' objects>
import pandas as pd
import numpy as np
n = 4
df = pd.DataFrame(np.random.randint(0, 100, size=(5, n)),
columns=[f'Col {i}' for i in range(n)])
renamed = df.rename(columns={'Col 2': str.upper})
print(df)
print(renamed)
您不能将函数作为字典项传递。这实际上是非常符合逻辑的,因为键是一个列名称,它假设您已经知道这个名称,因此可以制作预期的值。
因此你应该使用:
df.rename(columns={'Col 2': 'COL 2'})
如果您知道该值可以位于值列表/集合中,您还可以使用自定义函数:
def renamer(col):
if col in {'Col 2'}:
return col.upper()
return col
df.rename(columns=renamer)
输出:
Col 0 Col 1 COL 2 Col 3
0 18 79 5 79
1 70 43 22 47
2 43 0 79 28
3 7 10 97 49
4 97 16 44 9