【问题标题】:How do I remove some data frame columns using regular expressions filtering but keep others that contain some of the characters?如何使用正则表达式过滤删除某些数据框列,但保留包含某些字符的其他列?
【发布时间】:2021-12-24 06:51:05
【问题描述】:

我需要从带有特定字符串模式 (.1) 的标头的 pandas 数据框中删除列。到目前为止,我的代码可以做到这一点,但也删除了标题包含模式 11 的列,我想保留它:

DX_totals = DX_totals[DX_totals.columns.drop(list(DX_totals.filter(regex='[.|1]{2}')))]

如何调整代码以仅删除标题包含模式.1 的列?

数据格式:

Well ID PlantFlow   PlantChrome DXRunTime   ME01    ME02    ME03    ME04    ME05    ME06    ... MJ22.1  MJ23.1  MJ24.1  MJ25.1  MJ26.1  MJ27.1  MJ28.1  MJ29.1  MJ30.1  DX
0   2021-01-01 00:01:00 91668344    5426653 22092   980729  1117150 103164  287075  2747259 1885657 ... -44.115395  -40.537468  0   -31.149002  -61.727837  0   0   -68.037201  -63.994675  22092
1   2021-01-02 00:00:00 92506192    5471052 22332   993835  1131376 0   0   2777229 0   ... -44.074005  -40.616493  0   -32.239822  -61.803848  0   0   -68.023262  -63.993423  22332
2   2021-01-03 00:00:00 93343920    5515476 22572   1006940 1145596 0   0   2807222 0   ... -43.943542  -40.857651  0   -31.181437  -61.927658  0   0   -68.01889   -63.997154  22572

期望的结果如下所示:

Well ID PlantFlow   PlantChrome DXRunTime   ME01    ME02    ME03    ME04    ME05    ME06    ME11  ...
0   2021-01-01 00:01:00 91668344    5426653 22092   980729  1117150 103164  287075  2747259 2748354 ...
1   2021-01-02 00:00:00 92506192    5471052 22332   993835  1131376 0   0   2777229 0   2777350 ...

谢谢!

【问题讨论】:

  • 大括号用于一般的重复量词,所以可能因为它{2}应该更改为{1}?并且可能删除 | 符号,因为您希望它完全匹配 .1?
  • @ImSo3K 我确实尝试过,但后来我想保留包含字符 1 的其他列被删除了。例如标题为ME02的列。
  • 如果您编辑帖子并添加数据示例以及您希望输出的样子会更容易。
  • 已编辑帖子中提供的数据和所需示例。

标签: python regex dataframe character columnheader


【解决方案1】:

我用你的一些标题创建了一个虚拟df:

df = pd.DataFrame({'ME01': ['dummy0'], 'ME04': ['dummy1'], 'ME05': ['dummy2'], 'MJ22.1': ['dummy3'], 'MJ24.1': ['dummy4']})

然后改了regex:

df[df.columns.drop(list(df.filter(regex=r'\.1')))]

输出:

【讨论】:

    猜你喜欢
    • 2011-05-05
    • 1970-01-01
    • 1970-01-01
    • 2022-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多