我有一个框架如下:
+-----------+------------+-------------+-----------+
| id_doctor | id_patient | consumption | type_drug |
+-----------+------------+-------------+-----------+
| d1 | p1 | 12.0 | bhd |
| d1 | p2 | 10.0 | lsd |
| d1 | p1 | 6.0 | bhd |
| d1 | p1 | 14.0 | carboxyl |
| d2 | p1 | 12.0 | bhd |
| d2 | p1 | 13.0 | bhd |
| d2 | p2 | 12.0 | lsd |
| d2 | p1 | 6.0 | bhd |
| d2 | p2 | 12.0 | bhd |
+-----------+------------+-------------+-----------+
字符串
我想计算每位医生服用bhd的消耗量< 16.0的不同患者。
我尝试了下面的query2,但它不工作:
dataframe.groupBy(col("id_doctor")).agg(
countDistinct(col("id_patient")).where(
col("type_drug") == "bhd" & col("consumption") < 16.0
)
)
型
3条答案
按热度按时间rsaldnfx1#
PySpark中的另一种解决方案,无需添加另一列:
字符串
5ssjco0h2#
只需在您的框架上使用
where
-此版本删除计数为0的id_doctor:字符串
使用这个语法,你可以保留所有的“医生”:
型
1bqhqjot3#
不添加额外列的解决方案(Scala)
字符串