如何在所有记录中删除包含字母和数值的 pandas 列
How to drop pandas column containing both alpha and numeric values across all records
我有一个名为 df
的 pandas 数据框,其中包含大约 200 万条记录。
有一个名为 transaction_id
的列可能包含:
- 某些记录的 alpha 值(例如“abscdwew”)
- 某些记录的数值(例如“123454”)
- 某些记录的字母和数字值(例如“asd12354”)
- 某些记录的字母、数字和特殊字符(例如“asd435_!”)
- 特殊字符(例如“_-!”)
如果所有值(即所有记录)包含以下内容,我想删除该列:
- 字母和数值的组合(例如“aseder345”)
- 字母和特殊字符的组合(例如“asedre_!”)
- 数字和特殊字符的组合(例如“123_!”)
- 所有特殊字符(例如“!”)
是否有 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 _-!
我有一个名为 df
的 pandas 数据框,其中包含大约 200 万条记录。
有一个名为 transaction_id
的列可能包含:
- 某些记录的 alpha 值(例如“abscdwew”)
- 某些记录的数值(例如“123454”)
- 某些记录的字母和数字值(例如“asd12354”)
- 某些记录的字母、数字和特殊字符(例如“asd435_!”)
- 特殊字符(例如“_-!”)
如果所有值(即所有记录)包含以下内容,我想删除该列:
- 字母和数值的组合(例如“aseder345”)
- 字母和特殊字符的组合(例如“asedre_!”)
- 数字和特殊字符的组合(例如“123_!”)
- 所有特殊字符(例如“!”)
是否有 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 _-!