gpt4 book ai didi

python - Pyspark 数据框连接有少量重复的列名和少量没有重复的列

转载 作者:太空宇宙 更新时间:2023-11-03 20:02:31 26 4
gpt4 key购买 nike

我需要在我的项目中实现 pyspark 数据帧连接。

我需要加入 3 种不同的情况。

1)如果两个数据框具有相同的名称,则连接列。我加入如下。它消除了重复的列 col1, col2

cond = ['col1', 'col2']

df1.join(df2, cond, "inner")

2) 如果两个数据框具有不同的名称连接列。我加入如下。它按预期维护所有 4 连接列。

cond = [df1.col_x == df2.col_y,
df1.col_a == df2.col_b]

df1.join(df2, cond, "inner")

3) 如果数据帧具有很少的同名连接列和很少的不同名称连接列。我尝试如下。但是,它失败了。

cond = [df1.col_x == df2.col_y,
df1.col_a == df2.col_b,
'col1',
'col2',
'col3']

df1.join(df2, cond, "inner")

我尝试了以下方法,效果很好。

cond = [df1.col_x == df2.col_y,
df1.col_a == df2.col_b,
df1.col1 == df2.col1,
df1.col2 == df2.col2,
df1.col3 == df2.col3]

df1.join(df2, cond, "inner")

但是col1、col2、col3有重复的列。我想在加入自身时消除这些重复的列,而不是稍后删除列。

请建议如何实现#3 或建议替代方法。

最佳答案

没有办法做到这一点:在幕后有一个等连接 (colA == colB),其中条件以字符串(序列)的形式给出(称为自然连接)的执行就像常规等连接( source )一样

frame1.join(frame2, 
"shared_column",
"inner")

被翻译为

frame1.join(frame2,
frame1.shared_column == frame2.shared_column,
"inner")

之后,重复项将被丢弃(投影)。

如果您的条件使用两个键,这两个键既可以是自然连接,也可以是常规等连接,则可以在之后删除重复的列,或者重命名在连接之前名称不同的列。

关于python - Pyspark 数据框连接有少量重复的列名和少量没有重复的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59154068/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com