我可以帮助您进行翻译。以下是需要翻译的内容:
我有一个数据框,其中包含以下数据:
df.show()
+-----+------+--------+
| id_A| idx_B| B_value|
+-----+------+--------+
| a| 0| 7|
| b| 0| 5|
| b| 2| 2|
+-----+------+--------+
假设B有3个可能的索引,我想创建一个表格,将所有的索引和值合并成一个列表(或numpy数组),看起来像这样:
final_df.show()
+-----+----------+
| id_A| B_values|
+-----+----------+
| a| [7, 0, 0]|
| b| [5, 0, 2]|
+-----+----------+
我已经做到了这一点:
from pyspark.sql import functions as f
temp_df = df.withColumn('B_tuple', f.struct(df['idx_B'], df['B_value']))\
.groupBy('id_A').agg(f.collect_list('B_tuple').alias('B_tuples'))
temp_df.show()
+-----+-----------------+
| id_A| B_tuples|
+-----+-----------------+
| a| [[0, 7]]|
| b| [[0, 5], [2, 2]]|
+-----+-----------------+
但是现在我无法运行一个合适的udf
函数来将temp_df
转换为final_df
。
是否有更简单的方法来完成这个任务?
如果没有,那么我应该使用什么样的正确函数来完成转换?