删除在Pandas中以某些字符串结尾的多个列

时间:2018-03-01 23:12:29

标签: python pandas

我有一个包含大量列的数据框,使用后缀' _o'。有没有办法删除所有具有' _o'在其标签的最后?

this post我已经看到了使用过滤功能删除以某些内容开头的列的方法。但是如何放弃那些以某种东西结束的东西呢?

3 个答案:

答案 0 :(得分:4)

有几种方法。

<强> Pandonic

df = df.loc[:, ~df.columns.str.endswith('_o')]]

df = df[df.columns[~df.columns.str.endswith('_o')]]]

列表理解

df = df[[x for x in df if not x.endswith('_o')]]

df = df.drop([x for x in df if x.endswith('_o')], 1)

答案 1 :(得分:1)

要在此处正确使用df.filter(),您可以将其与lookbehind

一起使用
>>> df = pd.DataFrame({'a': [1, 2], 'a_o': [2, 3], 'o_b': [4, 5]})

>>> df.filter(regex=r'.*(?<!_o)$')
   a  o_b
0  1    4
1  2    5

答案 2 :(得分:0)

这可以通过仅用所需列重新分配数据框来完成

AzureServiceTokenProvider