Pyspark:内部连接两个Pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列
我有两个pyspark数据帧A和B。我想内部连接两个pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列Pyspark:内部连接两个Pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列,pyspark,Pyspark,我有两个pyspark数据帧A和B。我想内部连接两个pyspark数据帧,并从第一个数据帧中选择所有列,从第二个数据帧中选择少数列 A_df id column1 column2 column3 column4 1 A1 A2 A3 A4 2 A1 A2 A3 A4 3 A1 A2 A3 A4 4 A1 A2 A3 A4 我正在尝试下面的代码- joined_df = (A_df.alias('A_df').join(B
A_df
id column1 column2 column3 column4
1 A1 A2 A3 A4
2 A1 A2 A3 A4
3 A1 A2 A3 A4
4 A1 A2 A3 A4
我正在尝试下面的代码-
joined_df = (A_df.alias('A_df').join(B_df.alias('B_df'),
on = A_df['id'] == B_df['id'],
how = 'inner')
.select('A_df.*',B_df.column5,B_df.column6))
但它给出了一个奇怪的结果,即在列中交换值。我怎样才能做到呢?提前谢谢有什么问题吗?一切正常
df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")
df1.alias('a').join(df2.alias('b'), ['id'], 'inner') \
.select('a.*', 'b.column5', 'b.column6').show()
+---+-------+-------+-------+-------+-------+-------+
| id|column1|column2|column3|column4|column5|column6|
+---+-------+-------+-------+-------+-------+-------+
| 1| A1| A2| A3| A4| B5| B6|
| 2| A1| A2| A3| A4| B5| B6|
| 3| A1| A2| A3| A4| B5| B6|
| 4| A1| A2| A3| A4| B5| B6|
+---+-------+-------+-------+-------+-------+-------+
有什么问题?一切正常
df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")
df1.alias('a').join(df2.alias('b'), ['id'], 'inner') \
.select('a.*', 'b.column5', 'b.column6').show()
+---+-------+-------+-------+-------+-------+-------+
| id|column1|column2|column3|column4|column5|column6|
+---+-------+-------+-------+-------+-------+-------+
| 1| A1| A2| A3| A4| B5| B6|
| 2| A1| A2| A3| A4| B5| B6|
| 3| A1| A2| A3| A4| B5| B6|
| 4| A1| A2| A3| A4| B5| B6|
+---+-------+-------+-------+-------+-------+-------+
.select('A_-df.*,'B_-df.column5','B_-df.column6'))
它给出了相同的问题。列之间的值混合如果两个表中的列名相同,则会变得不明确。重命名其中一个表中的列并执行此操作。它会起作用。选择('A_-df.*,'B_-df.column5','B_-df.column6'))
它给出了相同的问题。列之间的值混合如果两个表中的列名相同,则会变得不明确。重命名其中一个表中的列并执行此操作。它会起作用的。
df1 = spark.read.option("header","true").option("inferSchema","true").csv("test1.csv")
df2 = spark.read.option("header","true").option("inferSchema","true").csv("test2.csv")
df1.alias('a').join(df2.alias('b'), ['id'], 'inner') \
.select('a.*', 'b.column5', 'b.column6').show()
+---+-------+-------+-------+-------+-------+-------+
| id|column1|column2|column3|column4|column5|column6|
+---+-------+-------+-------+-------+-------+-------+
| 1| A1| A2| A3| A4| B5| B6|
| 2| A1| A2| A3| A4| B5| B6|
| 3| A1| A2| A3| A4| B5| B6|
| 4| A1| A2| A3| A4| B5| B6|
+---+-------+-------+-------+-------+-------+-------+