簡體   English   中英

如何使用 Python / Pyspark 在 Databricks 筆記本中合並數據幀

[英]How to merge dataframes in Databricks notebook using Python / Pyspark

我正在使用 Databricks 筆記本提取 gz 壓縮的 csv 文件並加載到 dataframe object 中。 我在下面的第 2 部分遇到問題。

第 1 部分:將壓縮文件加載到 dataframe 運行良好...

    %python
    df1 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_1.csv.gz")
    df2 = spark.read.option("header",True).option("delimiter", "|").csv("dbfs:/model/.../file_2.csv.gz")
    

第 2 部分:嘗試合並數據框...

    %python
    import pandas as pd
    df =pd.concat([df1, df2], ignore_index=True)
    df.show(truncate=False)
    

...返回以下錯誤:

TypeError:無法連接類型為'<class'pyspark.sql.dataframe.DataFrame'>'的object; 只有 Series 和 DataFrame 對象有效

關於嘗試修改我如何合並數據框的任何建議? 我將有多達 20 個文件要合並,其中所有列都是相同的。

如果對象很大,我認為最好的方法不是從pyspark轉換為pandas ,而是在pyspark中執行等效的concat

請注意,自 Spark“2.0.0”版本以來, unionAll()已被棄用,並替換為union()https://sparkbyexamples.com/pyspark/pyspark-union-and-unionall/

我相信你可以這樣做:

from functools import reduce
from pyspark.sql import DataFrame

dfs = [df1,df2]
merged = reduce(DataFrame.union, dfs)

當然要查看它:

merged.show(truncate=False) # or display(merged)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM