我在Spark上使用Pandas。我需要按A和B分组,然后聚合以返回一个map列表,其中键是C,值是D Sample输入:
A B C D
0 7 201806851 0006378110 2223982011
1 7 6378110 0006378110 2223982011
2 7 201806851 201806851 20972475011
3 7 6378110 201806851 20972475011
样品输出:
A B C
0 7 6378110 [[0006378110, 2223982011], [201806851, 20972475011]]
1 7 201806851 [[0006378110, 2223982011], [201806851, 20972475011]]
这是我的代码。它在第一行给出了错误assert len(key) == len(that_column_labels) AssertionError
。有什么想法吗?
seed_data["C"] = seed_data[["C", "D"]].to_dict('records')
seed_data = (seed_data
.groupby(["A", "B"])["C"]
.apply(list).reset_index(name="C"))
尝试了一些事情,比如将列C和D提取到一个单独的嵌套框架中,转换为dict,然后将其用作聚合列。但得到Assert错误。
1条答案
按热度按时间oymdgrw71#
可以使用本机spark函数以有效的方式完成此操作。在pyspark中,您需要对框架进行分组,然后收集
c -> D
对的列表