pandas 按数字更改部分列名

nx7onnlm  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(96)

如何用列表中的元素替换Pandas数据框的部分列名。
例如,以下是我的列名:['area_Smith, 'area_Jones', 'area_Johnson', average_volume_Smith, ...]
现在我想给予所有的名字编号:因此,我会创建一个名为names的列表,其中包含['Smith', 'Jones', 'Johnson', ....],另一个名为number的列表,其中包含['0', '1', '2', ....]。然后,我会将Smith替换为0,Jones替换为1,以此类推。因此,结果应为:['area_0, 'area_1', 'area_2', average_volume_0, ...]

k0pti3hp

k0pti3hp1#

您可以尝试:

from itertools import count
from collections import defaultdict

cnt = defaultdict(lambda c=count(1): next(c))

df.columns = df.columns.str.replace(
    r"(.*_)(.*?)$", lambda g: f"{g[1]}{cnt[g[2]]:0>4}", regex=True
)
print(df)

图纸:

area_0001  area_0002  area_0003  average_volume_0001
0          0          1          2                    3

使用的数据框:

area_Smith  area_Jones  area_Johnson  average_volume_Smith
0           0           1             2                     3

相关问题