使用正则表达式删除列

时间:2020-05-22 14:47:22

标签: python regex pandas

我有一个包含以下列的数据框:

d

我想排除那些带有双下划线的字符。 即,仅保留:

[QWE_234, QWE_789234, QWE_2_234, QWE_2_789234 ...]

注意:我还有其他带有双下划线的列,因此我只想排除包含下划线的“ QWE”列。

2 个答案:

答案 0 :(得分:1)

我们可以将filterregex一起使用,并带有列表组件。

df = pd.DataFrame(
    {"QWE_234": 0, "QWE_789234": 0, "QWE_2_234": 0, "QWE_2_789234": 0}, index=[0]
)

  QWE_234  QWE_789234  QWE_2_234  QWE_2_789234
0        0           0          0             0

cols = [col for col in df.columns if col not in df.filter(regex='\w+_\w+_').columns]

print(df[cols])

   QWE_234  QWE_789234
0        0           0

答案 1 :(得分:1)

您可以不用regex

mask = df.columns.str.startswith('QWE_')
df = df.loc[:, ~mask]

或类似地:

drop_cols = [x for x in df.columns if x.startswith('QWE_')]
df = df.drop(drop_cols, axis=1)