我想做的是:
使用两个数据帧 A
和 B
各自的 id
列a_id
和b_id
连接它们。我想从A
中选择所有列,从B
中选择两个特定列
我尝试了类似于我在下面用不同引号写的东西,但仍然不起作用。我觉得在pyspark中,应该有一种简单的方法来做到这一点。
A_B = A.join(B, A.id == B.id).select(A.*, B.b1, B.b2)
我知道你可以写作
A_B = sqlContext.sql("SELECT A.*, B.b1, B.b2 FROM A JOIN B ON A.a_id = B.b_id")
这样做,但我想更像上面的伪代码。
我认为更简单的解决方案是用您想要的选定列将表A连接到表B。下面是实现这一点的示例代码:
joined_tables = table_A.join(table_B.select('col1', 'col2', 'col3'), ['id'])
上面代码连接了table_A中的所有列和table_B中的列“col1”、“col2”、“col3”
尝试此解决方案:
A_B = A.join(B,col('B.id') == col('A.id')).select([col('A.'+xx) for xx in A.columns]
+ [col('B.other1'),col('B.other2')])
SELECT
中的下面几行发挥了从表A中选择所有列和从表B中选择2列的技巧。
[col('a.'+xx) for xx in a.columns] : all columns in a
[col('b.other1'),col('b.other2')] : some columns of b
您的伪代码基本上是正确的。如果两个DataFrames中都存在id
列,则此稍微修改的版本将起作用:
A_B = A.join(B, on="id").select("A.*", "B.b1", "B.b2")
从pyspark.sql.DataFrame.join()
的文档中:
如果< code>on是指示联接列名称的字符串或字符串列表,则列必须存在于两端,这将执行等同联接。
由于键是不同的,因此您只需与列()(
或与列姆Renamed())
一起使用即可在两个数据帧中创建具有相同名称的列:
A_B = A.withColumn("id", col("a_id")).join(B.withColumn("id", col("b_id")), on="id")\
.select("A.*", "B.b1", "B.b2")
如果您的数据帧具有长而复杂的名称,您还可以使用<code>alias()
A_B = long_data_frame_name1.alias("A").withColumn("id", col("a_id"))\
.join(long_data_frame_name2.alias("B").withColumn("id", col("b_id")), on="id")\
.select("A.*", "B.b1", "B.b2")
问题内容: 我有2个数据框: restaurant_ids_dataframe 和 restaurant_review_frame 我想使用熊猫中的DataFrame.join()命令将这两个DataFrame加入一个单一的数据框中。 我尝试了以下代码行: 但是,当我尝试这样做时,出现以下错误: 我对熊猫很陌生,不知道就执行join语句而言我在做什么错。 任何帮助将非常感激。 问题答案: 您可以使
假设我有一个spark数据帧,有几列(其中列)和数据帧,有两列:和。 是否有复制以下命令的方法
问题内容: 该表包含一个ID列,valueHeading列和一个value列。我想将value列分为两个新列,分别称为valueHeading1和valueHeading2,具体取决于值具有哪种valueHeading类型。 所以我想加入这个选择: 编辑:完全加入 使用此选择: 在各自的ID上。我该怎么做呢? 编辑 以说明我要执行的操作: 原始表格: 新表: 问题答案: 在SQLServer200
问题内容: 我找不到关于交叉联接的任何信息,包括合并/联接或其他一些东西。我需要使用{my function}作为myfunc处理两个数据帧。相当于: 相当于: 但我需要更有效的解决方案:如果使用了应用,我将如何实现它们; ^^ 问题答案: 对于叉积,请参阅此问题。 本质上,您必须进行常规合并,但为每一行赋予相同的键以进行连接,以使每一行在框架之间相互连接。 然后可以通过应用函数将列添加到新框架:
我试图连接两个表,但似乎有一个问题,我寻找的输出是有主题的行量。
本文向大家介绍ZendFramework框架实现连接两个或多个数据库的方法,包括了ZendFramework框架实现连接两个或多个数据库的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了ZendFramework框架实现连接两个或多个数据库的方法。分享给大家供大家参考,具体如下: 配置文件: 入口文件 这里是默认的数据库 dao.php调用默认数据库 dao2.php连接其他数据库 调