我想过滤出“ Col1”列中所有包含符号“”的行。
Col1 Col2
11" A
0! Q
123456 A
252653 A
343535 A
预期结果:
Col1 Col2
123456 A
252653 A
343535 A
为此,我决定过滤掉所有非数字值:
def is_digit(value):
if value:
return value.isdigit()
else:
return False
is_digit_udf = udf(lambda value: is_digit(value), BooleanType())
df.filter(when(is_digit_udf(df["Col1"]))).show()
但是此代码失败并显示错误消息:
TypeError:when()缺少1个必需的位置参数:“值”
答案 0 :(得分:1)
when
函数与sql中的case when
等效。
因此,它不能直接在filter
中使用。您可以尝试:
from pyspark.sql.functions import lit
df.filter(is_digit_udf(df["Col1"]))==lit(True)).show()
答案 1 :(得分:-1)
创建提供的输入数据框:
import pandas as pd
Data = {'Col1': ['11"', '0!', '123456', '252653', '343535'], 'Col2': ['A', 'Q', 'A', 'A', 'A']}
df = pd.DataFrame(Data)
要从特定列中删除所需的字符串内容,请使用以下方法:
df.drop(df[df['Col1'].str.contains('"')].index, inplace=True)
其中' Col1 '是所需的列,而'“ '是所需的内容
输出:
Col1 Col2
0! Q
123456 A
252653 A
343535 A
您要过滤包含“ 吗?
的非数字或字符串