首页 > 解决方案 > 如果列名是动态的,如何将列名重命名为数据框中的新值

问题描述

我有 csv 文件,其中列名根据月份和年份而变化,但有诸如“销售”“产品”等关键字。有没有办法通过搜索关键字将列重命名为使用 python rename 的固定值示例列名将是 2019 5 月销售电视,2018 年 4 月销售冰箱,例如

df_nw = df.rename(df.filter(like='Sales').columns.values

当前数据:

column1 column2 2019AprilSalesTV 2018ActualSalesTV
X        BBBB       7766              60
Y        CCCC         10              20
Z        LLLLL        60              65
K        TTTTT         10             67

新数据:

column1 column2    Sales          ActualSales
X        BBBB       7766              60
Y        CCCC         10              20
Z        LLLLL        60              65
K        TTTTT         10             67

标签: regexpandaspython-2.7

解决方案


你可以做:

> clean_colname = lambda x: re.sub(r'(^\w+(?<!Actual))(Sales)', r'\2',
                                   re.sub(r'^\d+|TV$', r'', x))

> df_nw.rename(clean_colname, axis=1) 

        column2  Sales  ActualSales
column1                            
X          BBBB   7766           60
Y          CCCC     10           20
Z         LLLLL     60           65
K         TTTTT     10           67

推荐阅读