基于值的 Spark-scan 数据框
Spark- scan data frame base on value
我正在尝试根据某个值查找列(我确实知道该列的名称)。例如,在下面的数据框中,我想知道哪一行有一列包含 yellow
for Category = A
。问题是我事先不知道列名(颜色)所以我做不到 select * where Category = 'A' and colour = 'yellow'
我怎样才能扫描列并实现这个?非常感谢您的帮助。
+--------+-----------+-------------+
|Category|colour |. name. |
+--------+-----------+-------------+
|A. | blue.| Elmo|
|A | yellow | Alex|
|B | desc | Erin|
+--------+-----------+-------------+
您可以循环检查列名列表。出于可读性的目的,您还可以将此循环包装在一个函数中。请注意,每列的检查将按顺序进行。
from pyspark.sql import functions as F
cols = df.columns
for c in cols:
cnt = df.where((F.col('Category') == 'A') & (F.col(c) == 'yellow')).count()
if cnt > 0:
print(c)
我正在尝试根据某个值查找列(我确实知道该列的名称)。例如,在下面的数据框中,我想知道哪一行有一列包含 yellow
for Category = A
。问题是我事先不知道列名(颜色)所以我做不到 select * where Category = 'A' and colour = 'yellow'
我怎样才能扫描列并实现这个?非常感谢您的帮助。
+--------+-----------+-------------+
|Category|colour |. name. |
+--------+-----------+-------------+
|A. | blue.| Elmo|
|A | yellow | Alex|
|B | desc | Erin|
+--------+-----------+-------------+
您可以循环检查列名列表。出于可读性的目的,您还可以将此循环包装在一个函数中。请注意,每列的检查将按顺序进行。
from pyspark.sql import functions as F
cols = df.columns
for c in cols:
cnt = df.where((F.col('Category') == 'A') & (F.col(c) == 'yellow')).count()
if cnt > 0:
print(c)