当前位置: 首页 > 知识库问答 >
问题:

将两个pyspark数据帧相乘

周祺
2023-03-14

我有一个PySpark数据帧,df1,看起来像:

CustomerID  CustomerValue CustomerValue2 
15          10            2
16          10            3
18          3             3

我有第二个PySpark数据帧,df2

 CustomerID  CustomerValue 
 15          2          
 16          3           
 18          4        

我想将df1的所有列(我有两列以上)与客户ID上的df2连接值相乘

 CustomerID     CosineCustVal CosineCustVal
 15             20            4
 16             30            9
 18             12            9

共有1个答案

颜志学
2023-03-14

加入它们后,您可以在 df1 的列上运行 for 循环:

from pyspark.sql import functions as F

df_joined = df1.join(df2, df1.CustomerID == df2.CustomerID)
for col_name in df_joined.columns:
    if col_name != 'CustomerValue':
        df_joined = df_joined.withColumn(col_name, F.column(col_name) * F.column('CustomerValue'))

基于这篇文章,spark将创建一个智能计划,即使for循环建议不这样做(请记住,spark只在调用< code>action时才开始计算,直到您分配< code > transformations :https://spark . Apache . org/docs/latest/rdd-programming-guide . html # transformations)。

 类似资料:
  • 我有一个PySpark数据帧,df1,看起来像: 我有第二个PySpark数据帧,df2 我想得到两个数据帧的余弦相似性。并有类似的东西

  • 假设我有两个数据帧,具有不同级别的信息,如下所示: 我想加入df1和df2,并将“值”信息传递给df2:一天中的每一小时都将获得“日”值。 预期产出:

  • 我有两个数据帧,DF1和DF2,DF1是存储来自DF2的任何附加信息的主机。 假设DF1是以下格式, DF2包含DF1中已经存在的2个条目和两个新条目。(itemId和item被视为一个组,可以被视为连接的键) 我需要合并两个数据框,以便增加现有项目计数并插入新项目。 结果应该是这样的: 我有一种方法可以做到这一点,但不确定这种方法是否有效或正确

  • 我有两个数据帧,我需要连接一列,如果id包含在第二个数据帧的同一列中,则只从第一个数据帧中获取行: df1: 断续器: 期望输出: 我已经用df1.join(df2("id ")," left ")试过了,但是给我错误:“Dataframe”对象是不可调用的。

  • 问题内容: 我在Databricks工作。 我有一个包含500行的数据框,我想创建两个包含100行的数据框,另一个包含剩余的400行。 我尝试了以下操作,但收到错误消息 问题答案: 最初,我误会了,并以为您想分割这些列。如果要选择行的子集,一种方法是使用创建索引列。从文档: 保证生成的ID是单调递增且唯一的,但不是连续的。 您可以使用此ID对数据框进行排序,并使用该ID对其子集进行排序,以确保准确

  • 我有两个包含GB数据的大型pyspark数据框df1和df2。第一个数据框中的列是id1,col1。第二个数据框中的列是id2,col2。数据框的行数相等。id1和id2的所有值都是唯一的。id1的所有值也正好对应一个值id2。 因为。前几个条目与df1和df2区域相同,如下所示 DF1: df2: 所以我需要连接键 id1 和 id2 上的两个数据帧。df = df1.join(df2, df1