regex - 如果列名是动态的,如何将列名重命名为数据框中的新值
问题描述
我有 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
解决方案
你可以做:
> 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
推荐阅读
- python-3.x - 使用日期过滤器从 Mongo 过滤数据
- dynamics-crm - 是否可以在 CRM Dynamics 365 CE 的“所有解决方案”视图中添加按钮?
- hibernate - org.hibernate.engine.jdbc.spi.SqlExceptionHelper - 无效的参数索引 2
- flutter - 当 snapshot.data 未来没有数据时颤振完美消息
- python - 从抽象方法继承包装器
- smalltalk - **连接两个 Smalltalk 的**方法是什么?
- python - 如何将滚动条填充到画布的高度?(基于网格)
- azure-devops - Azure DevOps Wiki:如何下载图像?
- excel - 使用 unsigned long 参数定义类型
- ember.js - Ember 3.12:从服务中取消订阅事件