【问题标题】:how to split string in column names based on the uppercase in pandas [duplicate]如何根据熊猫中的大写拆分列名中的字符串[重复]
【发布时间】:2021-11-09 17:06:24
【问题描述】:

我的excel文件中的列名没有空格,写法如下:

ProjectNo, ProjectName, DocNo, DescriptionOfDesign

所以我想将列名拆分为小写并用_分隔:

project_no, project_name, doc_no, description_of_design

我尝试使用 re.findall

df.columns = re.findall('[A-Z][^A-Z]*', [df.columns])

我得到的错误:

TypeError: expected string or bytes-like object

我应该如何编写脚本以获得所需的列名?

提前致谢。

【问题讨论】:

  • df.columns.str.replace(some_pattern) 是应用正则表达式替换模式的正确方法。 df.columns.str.extractall(some_pattern) 是您找到模式的方式。

标签: python pandas string split


【解决方案1】:

你的情况

df.columns=  df.columns.str.findall('[A-Z][^A-Z]*').map(lambda x : '_'.join(y.lower() for y in x) )
Out[32]: Index(['project_no', 'project_name', 'doc_no', 'description_of_design'], dtype='object')

并修复您的代码

df.columns.map(lambda x : re.findall('[A-Z][^A-Z]*', x))
Out[36]: 
Index([              ['Project', 'No'],             ['Project', 'Name'],
                         ['Doc', 'No'], ['Description', 'Of', 'Design']],
      dtype='object')

【讨论】:

    猜你喜欢
    • 2018-11-06
    • 2019-05-17
    • 2011-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-23
    • 1970-01-01
    相关资源
    最近更新 更多