我有一个 Dataframe 如下:
+-----------+------------+-------------+-----------+
| 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每个医生。
我尝试了以下查询,但它不起作用:
dataframe.groupBy(col("id_doctor")).agg(
countDistinct(col("id_patient")).where(
col("type_drug") == "bhd" & col("consumption") < 16.0
)
)
有人帮忙吗?
谢谢!
3条答案
按热度按时间piztneat1#
PySpark中的另一个解决方案,无需添加另一个色谱柱:
5lhxktic2#
只需在 Dataframe 上使用
where
-此版本删除计数为0的id_doctor:使用此语法,您可以保留所有“doctor”:
bn31dyow3#
和不添加额外列的解决方案(Scala)