从 PySpark 数据框中删除值只出现一次的行
Remove rows from PySpark dataframe where value only appears once
有一个与此问题非常相似的问题
我的 Dataframe 如下所示:
ID Month Metric1 Metric2
1 01 4 3
3 01 4 2
3 01 3 1
1 02 3 2
1 02 1 5
2 02 6 3
2 02 7 2
3 03 5 6
我想先按月分组,再按ID分组(对于droping,结果不应该分组)。最后,我想删除所有 id 或 month 只出现一次的行。
ID Month Metric1 Metric2
- -- - -
3 01 4 2
3 01 3 1
1 02 3 2
1 02 1 5
2 02 6 3
2 02 7 2
- -- - -
与我上面链接的问题相同的问题,仅在 PySpark 中并且有两个分组...
我一直在尝试将 pandas 命令转换为 pyspark,但我不知道如何替换 [],因为 pyspark 似乎不认识它们...
df2 = df[df.groupBy("ID", "Month")].ID.count("ID") >1]
此外,我尝试了 window 功能。但他们总是最终需要 am 聚合函数,而我不希望数据被聚合:
from pyspark.sql.window import Window as W
window = W.partitionBy("Month").orderBy("ID")
df.withColumn("ID",Moth.over(window)) \
.show()
如有任何帮助,我们将不胜感激!
获取按 Id 和月份划分的计数并消除计数为 1 的行:
from pyspark.sql import functions as F, Window as W
w = W.partitionBy("ID","Month").orderBy("Month")
out = df.withColumn("C",F.count("ID").over(w)).filter("C!=1").drop("C")
我的 Dataframe 如下所示:
ID Month Metric1 Metric2
1 01 4 3
3 01 4 2
3 01 3 1
1 02 3 2
1 02 1 5
2 02 6 3
2 02 7 2
3 03 5 6
我想先按月分组,再按ID分组(对于droping,结果不应该分组)。最后,我想删除所有 id 或 month 只出现一次的行。
ID Month Metric1 Metric2
- -- - -
3 01 4 2
3 01 3 1
1 02 3 2
1 02 1 5
2 02 6 3
2 02 7 2
- -- - -
与我上面链接的问题相同的问题,仅在 PySpark 中并且有两个分组...
我一直在尝试将 pandas 命令转换为 pyspark,但我不知道如何替换 [],因为 pyspark 似乎不认识它们...
df2 = df[df.groupBy("ID", "Month")].ID.count("ID") >1]
此外,我尝试了 window 功能。但他们总是最终需要 am 聚合函数,而我不希望数据被聚合:
from pyspark.sql.window import Window as W
window = W.partitionBy("Month").orderBy("ID")
df.withColumn("ID",Moth.over(window)) \
.show()
如有任何帮助,我们将不胜感激!
获取按 Id 和月份划分的计数并消除计数为 1 的行:
from pyspark.sql import functions as F, Window as W
w = W.partitionBy("ID","Month").orderBy("Month")
out = df.withColumn("C",F.count("ID").over(w)).filter("C!=1").drop("C")