【问题标题】:Pyspark: How to merge dataframes like Pandas?Pyspark:如何合并 Pandas 等数据帧?
【发布时间】:2018-06-29 15:46:02
【问题描述】:

比如https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html

>>> A              >>> B
    lkey value         rkey value
0   foo  1         0   foo  5
1   bar  2         1   bar  6
2   baz  3         2   qux  7
3   foo  4         3   bar  8

>>> A.merge(B, left_on='lkey', right_on='rkey', how='outer')
   lkey  value_x  rkey  value_y
0  foo   1        foo   5
1  foo   4        foo   5
2  bar   2        bar   6
3  bar   2        bar   8
4  baz   3        NaN   NaN
5  NaN   NaN      qux   7

我想知道

  1. 如何在 Pyspark 中执行此操作?
  2. 更进一步,如何将lkeyrkey 合并为一列,从两边补充缺失值?

【问题讨论】:

    标签: python pandas apache-spark pyspark


    【解决方案1】:

    如何在 Pyspark 中做到这一点?

    你正在寻找的是join

    A.join(other=B, on=(A['lkey'] == B['rkey']), how='outer')\
        .select(A['lkey'], A['value'].alias('value_x'), B['rkey'], B['value'].alias('value_y'))\
        .show(truncate=False)
    

    这应该给你

    +----+-------+----+-------+
    |lkey|value_x|rkey|value_y|
    +----+-------+----+-------+
    |bar |2      |bar |6      |
    |bar |2      |bar |8      |
    |null|null   |qux |7      |
    |foo |1      |foo |5      |
    |foo |4      |foo |5      |
    |baz |3      |null|null   |
    +----+-------+----+-------+
    

    更进一步,如何将 lkey 和 rkey 合并为一列,从两边补充缺失值?

    您可以rename 列并将join 用作

    from pyspark.sql.functions import col
    A.select(col('lkey').alias('key'), col('value').alias('value_x'))\
        .join(other=B.select(col('rkey').alias('key'), col('value').alias('value_y')), on=['key'], how='outer')\
        .show(truncate=False)
    

    这应该给你

    +---+-------+-------+
    |key|value_x|value_y|
    +---+-------+-------+
    |bar|2      |6      |
    |bar|2      |8      |
    |qux|null   |7      |
    |foo|1      |5      |
    |foo|4      |5      |
    |baz|3      |null   |
    +---+-------+-------+
    

    希望回答对你有帮助

    【讨论】:

      猜你喜欢
      • 2018-02-28
      • 2018-08-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-21
      相关资源
      最近更新 更多