如何在所有记录中删除包含字母和数值的 pandas 列

How to drop pandas column containing both alpha and numeric values across all records

我有一个名为 df 的 pandas 数据框,其中包含大约 200 万条记录。 有一个名为 transaction_id 的列可能包含:

如果所有值(即所有记录)包含以下内容,我想删除该列:

是否有 pythonic 的方式来做到这一点?

因此,如果一列包含跨 al

给定以下玩具数据框,其中应删除 col1 并应根据您的标准保留 col2:

import pandas as pd

df = pd.DataFrame(
    {
        "col1": [
            "abs@&wew",
            "123!45!4",
            "asd12354",
            "asdfzf_!",
            "123_!",
            "asd435_!",
            "_-!",
        ],
        "col2": [
            "abscdwew",
            "123454",
            "asd12354",
            "a_!sdfzf",
            "123_!",
            "asd435_!",
            "_-!",
        ],
    }
)

这是一种方法:

test = lambda x: True if x.isalpha() or x.isdigit() else False
cols_to_keep = df.apply(lambda x: any(test(x) for x in x))

df = df.loc[:, cols_to_keep]

print(df)
# Output
       col2
0  abscdwew
1    123454
2  asd12354
3  a_!sdfzf
4     123_!
5  asd435_!
6       _-!