将列放在熊猫数据框中

时间:2020-02-18 09:55:15

标签: python-3.x pandas

col_exclusions = ['分子','分子''分母','分母']

数据框

template <typename T>
class Foo;

template <typename T>
constexpr bool operator==(T lhs, const Foo<T>& rhs);

template <typename T>
class Foo {
public:
    constexpr Foo(T k) : mK(k) {}

    constexpr friend bool operator==<T>(T lhs, const Foo& rhs);

private:
    T mK;
};

template <typename T>
constexpr bool operator==(T lhs, const Foo<T>& rhs) {
    return lhs == rhs.mK;
}

int main() {
    return 1 == Foo<int>(1) ? 0 : 1;
}

最终输出是id和结果

3 个答案:

答案 0 :(得分:5)

使用正则表达式

import re

pat = re.compile('|'.join(col_exclusions),flags=re.IGNORECASE)

final_cols = [c for c in df.columns if not re.search(pat,c)]

#out:

['id', 'Result']

print(df[final_cols])

   id Result
0   1   Fail

如果要删除

df = df.drop([c for c in df.columns if re.search(pat,c)],axis=1)

还是纯熊猫方法,这要归功于@ Anky_91

df.loc[:,~df.columns.str.contains('|'.join(col_exclusions),case=False)]

答案 1 :(得分:0)

您可以明确地使用del来表示包含输入列表中后缀的列:

for column in df.columns:
    if any([column.endswith(suffix) for suffix in col_exclusions]):
        del df[column]

答案 2 :(得分:0)

您还可以使用以下方法,其中列名被拆分然后与col_exclusions

匹配
df.drop(columns=[i for i in df.columns if i.split("_")[-1] in col_exclusions], inplace=True)
print(df.head())