映射以使用函数重命名单个列标签?

问题描述 投票:0回答:1

使用字符串函数重命名列标签所需的映射是什么?

例如这适用于所有列:

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)
pandas indexing rename
1个回答
0
投票

您不能将函数作为字典项传递。这实际上是非常符合逻辑的,因为键是一个列名称,它假设您已经知道这个名称,因此可以制作预期的值。

因此你应该使用:

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
© www.soinside.com 2019 - 2024. All rights reserved.