最近在学习spark 哎,但是发现很多功能都没有pandas好用,很多功能都不具备(也可能是我还没学到那),记录一个纵向合并的问题

pandas合并多个df:

j简单写一下

import pandas as pd

data_list = []

df1
df2
df3...

data_list.append(df1...)

#data_list: [df1, df2, df3, df4....]

df_result = pd.concat(data_list)

spark:(我写的很笨的办法)

from pyspark.sql import SparkSession
spark = SparkSession.builder.getOrCreate()

df_list = []
d = [{'name': 'Alice', 'age': 21}]
df1 = spark.createDataFrame(d)
df1.show()
df_list.append(df1)

d = [{'name': 'Bob', 'age': 12}]
df2 = spark.createDataFrame(d)
df2.show()
df_list.append(df2)

d = [{'name': 'mary', 'age': 11}]
df3 = spark.createDataFrame(d)
df3.show()
df_list.append(df3)



for i, df in enumerate(df_list):
    if i == 0:
        trip_df = df
    else:
        trip_df = trip_df.union(df)
trip_df.show()

结果:

 可能有更简单的方法我没有找到

找到新办法啦!


from functools import reduce
from pyspark.sql import DataFrame
 
def unionAll(*dfs):
    return reduce(DataFrame.unionAll, dfs)
 
df_list= [df, df1, df2...]
df = unionAll(*df_list)

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐