【发布时间】:2022-07-28 01:43:49
【问题描述】:
我有 3 个输入 dfs,格式如下:
key | irrelevant_data
----------------------
A | asdfg
B | asdfg
key | irrelevant_data
----------------------
C | asdfg
B | asdfg
我想将 3 组合成一个类似字典的 df,它将映射键->计算它的显示次数
即从上面的例子:
key | count
----------------------
A | 1
C | 1
B | 2
运行一次后,我需要将数据保留在 dict 中以供下一次迭代使用,该迭代将有 3 个新的输入 dfs。我们可能会遇到相同的键 - 在这种情况下,增加计数。这样做的目的是一旦计数达到 3,我想将其从表中删除并获取该键。
我正在考虑将输入 dfs 之一转换为 MapType(在 dfs 中保证键是唯一的,但在所有 3 个输入 dfs 中并非如此):
df1 = df1.withColumn("propertiesMap", F.create_map(
F.col("key"), F.lit(1)
))
但在那之后,我不确定如何从其他 2 个 dfs 中添加行并增加计数(如果键已经存在,如果不存在则创建新行)。我对python很熟悉,就这么简单:
# pseudocode of what I essentially want in PySpark, where dict is a df
dict = {}
for curr_df in dfs:
for key, _ in curr_df.items():
dict[key] += 1
【问题讨论】:
标签: dataframe apache-spark dictionary pyspark apache-spark-sql