我目前正在尝试实现动态过滤器。问题是,我有一个动态的列列表-并且我正在生成包含TRUE或FALSE的新列。在这些新列上,我要选择
举个例子,这里是输入数据集(连同TRUE / FALSE列):
sc = SparkContext.getOrCreate()
df = sc.parallelize([('a','a1',True,'aa','aa1',True),
('b','b1',False,'bb','bb1',True),
('c','c1',False,'cc','cc1',False)]).toDF(
["a_1","a_1_new","a_1_suc","b_1","b_1_new","b_1_suc"])
想法是,最终数据集始终具有按3组的列-一个_1,一个_1_new和一个_1_suc。
现在最终结果应该是一个数据帧,例如
a_1 a_1_new a_1_suc b_1 b_1_new b_1_suc
a a1 True aa aa1 True
我已经开始使用它了-只是显式地使用
df.filter(((F.col("a_1_suc") == 'True') & (F.col("b_1_suc")` == 'True')))
但是,这不是动态的-可能有c / d / e列,因此c_1_suc / d_1_suc和e_1_suc必须为真。这可能吗?
类似地,a_1_suc ='False'的情况-但是,在这里我想拆分行:
Name_1 Name_1_new Name_1_suc
b b1 False
c c1 False
cc cc1 False
在这里,缺少2点:首先像上面的示例一样显式过滤行,仅使用|。代替&-是否还可以动态地实现?
第二,考虑到数据框中可以有多列,我该如何将行拆分(必要时)。
谢谢您的问候。