我正在pyspark中处理一个Dataframe,如果Dataframe的其他列中存在值,则需要逐行计算。例如,给定此Dataframe:
测向:
+---------+--------------+-------+-------+-------+
|Subject |SubjectTotal |TypeA |TypeB |TypeC |
+---------+--------------+-------+-------+-------+
|Subject1 |10 |5 |3 |2 |
+---------+--------------+-------+-------+-------+
|Subject2 |15 |0 |15 |0 |
+---------+--------------+-------+-------+-------+
|Subject3 |5 |0 |0 |5 |
+---------+--------------+-------+-------+-------+
作为输出,我需要确定哪个类型具有100%的 SubjectTotal
. 所以我的输出是这样的:
数据框输出:
+---------+--------------+
|Subject |Type |
+---------+--------------+
|Subject2 |TypeB |
+---------+--------------+
|Subject3 |TypeC |
+---------+--------------+
有可能吗?
谢谢!
3条答案
按热度按时间kognpnkq1#
你可以用
when
列表中所有列的表达式TypeX
,那么coalesce
表达式列表:xlpyo6sf2#
你可以试试
when().otherwise()
pyspark sql函数或case
sql语句sg3maiej3#
您可以使用
stack
并过滤其中的行SubjectTotal
等于类型列中的值: