我有两个数据帧 df1 和 df2。我正在尝试加入(左加入)
DF1:
Name ID Age
AA 1 23
BB 2 49
CC 3 76
DD 4 27
EE 5 43
FF 6 34
GG 7 65
df2:
ID Place
1 Germany
3 Holland
7 India
Final=df1.join(df2,on=['ID'],how='left')
Name ID Age Place
AA 1 23 Germany
BB 2 49 null
CC 3 76 Holland
DD 4 27 null
EE 5 43 null
FF 6 34 null
GG 7 65 India
但是,如果Place
值为空,我想用名称
column值填充
列
预期输出:
Name ID Age Place
AA 1 23 Germany
BB 2 49 BB
CC 3 76 Holland
DD 4 27 DD
EE 5 43 EE
FF 6 34 FF
GG 7 65 India
解决方案,我能想到的是,一旦连接完成,我可以检查Place
的值,如果为空,则替换为Name
。如果有其他优雅的解决方法,请告诉我。谢谢。
是的,谢谢。经过一些搜索设法使用,如下面的链接所示
from pyspark.sql.functions import coalesce
df1.withColumn("Place",coalesce(df1.Place,df.Name))
另一个线程
假设我有两个数据帧,具有不同级别的信息,如下所示: 我想加入df1和df2,并将“值”信息传递给df2:一天中的每一小时都将获得“日”值。 预期产出:
问题内容: 需要使用意大利语翻译查找所有单词,如果不存在意大利语,则需要使用西班牙语(默认语言)。 我不能使用多个查询,并且存在条件(技术限制) 字 笔译 结果: 这段代码返回了我需要的全部信息,但是我无法在我所处的情况下使用存在条件的地方 问题答案: 我会在桌子上加入桌子两次,每种语言一次:
有很多关于这个问题的帖子,但没有一个回答我的问题。 在尝试将许多不同的数据帧连接在一起时,我在PySpark中遇到了<code>OutOfMemoryError 我的本地机器有16GB内存,我已将Spark配置设置为: 关于Spark中OOM错误的SO帖子显然很多很多,但基本上大多数都是说增加你的内存属性。 我实际上是对50-60个较小的数据帧执行连接,这些数据帧有两列< code>uid和< c
我有两个具有大量(几百万到几千万)行的数据帧。我想为他们牵线搭桥。 在我目前使用的BI系统中,您可以通过首先对特定键进行分区,然后在该键上进行连接来快速完成此操作。 这是我在Spark中需要遵循的模式吗,或者这并不重要?乍一看,在分区之间转移数据似乎浪费了很多时间,因为没有正确地进行预分区。 如果有必要,我该怎么做?
我有两个包含GB数据的大型pyspark数据框df1和df2。第一个数据框中的列是id1,col1。第二个数据框中的列是id2,col2。数据框的行数相等。id1和id2的所有值都是唯一的。id1的所有值也正好对应一个值id2。 因为。前几个条目与df1和df2区域相同,如下所示 DF1: df2: 所以我需要连接键 id1 和 id2 上的两个数据帧。df = df1.join(df2, df1
你能帮我连接两个数据帧吗。 我有两个数据帧。 DF1: DF2: 我需要基于前两个数据帧创建一个数据帧,左连接两列。列index和val2在两个数据帧中具有相同的名称。df3的结果应该如下所示: 应该删除df1中不存在的df2中的索引,如果df1中的索引具有与df2中相同的val2,则应该将1添加到新的列val3中,否则:NaN。 非常感谢提前!