假设我有两个数据帧,每个数据帧有4列。前3列是字符串类型,第4列是数组类型。 我希望连接这两个数据帧,以便生成的数据帧将满足以下要求:
在前3列的值在两个数据帧之间相同的行中,结果数据帧中的行将包含相同的值,而数组列将包含每个原始数据帧的第4列数组中所有值的并集
第二个数据帧中没有“相同”(仅前3列)伙伴的行将显示为结果数据帧中的原始行
例如:
DF1 = [
Row(str1="StringA", str2="StringB", str3="StringC", arr=["array_member_a"]),
Row(str1="String1", str2="String2", str3="String3", arr=["array_member_1"])]
DF2 = [
Row(str1="StringA", str2="StringB", str3="StringC", arr=["array_member_d"]),
Row(str1="String1", str2="String8", str3="String9", arr=["array_member_x"])]
reulst_DF = [
Row(str1="StringA", str2="StringB", str3="StringC", arr=["array_member_a", "array_member_d"]),
Row(str1="String1", str2="String2", str3="String3", arr=["array_member_1"]),
Row(str1="String1", str2="String8", str3="String9", arr=["array_member_x"])]
问题:join和group by之间有什么区别? 回答:只有聚合轴
聚合不同的行比聚合不同的列要简单得多,所以让我们重新解释一下您的问题
首先,我们用
union
将行轴上的数据帧“连接”起来。与join
相反,我们要聚合的行将位于一行的不同列中,这将生成多行,其中一列要聚合:现在我们收集行的值。这些是阵列,因此必须先将其展平,然后才能进行区分:
相关问题 更多 >
编程相关推荐