如何在python中创建两个数据帧,并在pyspark中将一个数据帧列中的空值替换为另一列



假设我有一个包含5列的df和另一个包含6列的df。我想把df1和df2连接起来,这样df1中列的空行就会被df2中的非空值所取代。如何在python中执行此操作?

我不想指定列的名称,请对它们进行硬编码。我想制作一个健壮的逻辑,即使将来我们需要将行替换为7列而不是6列,它也能工作。

示例数据:df1=

col1    col2      col3   col5
1       null      null     5
2       null       5       9
4        4         8       6
null     0         9       1

df2=

col1     col2     col3    col4
1         2        -3      5
null     null       7      5
4         4         8      1
1         null      9      3

最终df=

col1       col2    col3    col5     col4
1         2        -3     5         5
2       null       5      9         5
4        4         8      6         1
1        0         9      1         3 

条件:

  1. df1中列的空行被df2中的非空值替换
  2. 如果两个数据帧在同一索引上具有不同的非空值,则取第一个或第二个。没关系
  3. 如果这两个值都为null,那么最终的df在同一索引上将具有null值
  4. 我不想指定列名,只想有一个健壮的脚本,它适用于其他具有不同列名的数据

我想把df1和df2连接起来,这样df1中列的空行就会被df2中的非空值所取代。如何在python中执行此操作?

只需加入即可使用coalesce获得第一个非空值

我不想指定列的名称,请硬连接它们。

您可以通过df.columns访问列的名称,并通过df.dtypes访问列的数据类型

最新更新