Pyspark:根据单独的特定条件过滤数据框

数据挖掘 Python 数据清理 阿帕奇火花 pyspark
2021-09-16 16:27:34

如何仅选择符合我的条件的某些条目并从这些条目中使用正则表达式再次过滤?

例如,我有这个数据框(df):

col1 col2 col3 col4
一个 F 5 G
D 2e sd
F G 23sd 一个
F fgf 45 d
r 3 e
一个 sd 8f dw
F sd 3h1 d

我想在 col1 中选择那些具有“F”值的条目,并使用正则表达式 ([a-zA-Z0-9]+) 再次过滤以仅获取带有数字和字母的条目。

+----+----+----+----+         +----+----+----+----+
|col1|col2|col3|col4|         |col1|col2|col3|col4|
+----+----+----+----+         +----+----+----+----+ 
|   F|   g|23sd|   a|   -->   |   F|   g|23sd|   a|
|   F| fgf|  45|   d|         |   F|  sd| 3h1|   d|
|   F|  sd| 3h1|   d|         +----+----+----+----+
+----+----+----+----+
1个回答

您可以filter在 Spark 的DataFrame API 上使用该方法:

df_filtered = df.filter("df.col1 = F").collect()

它也支持正则表达式

pattern = r"[a-zA-Z0-9]+"
df_filtered_regex = df.filter([df_filtered.c.rlike(pattern) for c in df.columns]).collect()`