list - 从数据框列表中制作单个数据框
问题描述
我有一个数据框列表,在列表的每个位置,我有一个数据框,我需要将所有这些数据框组合在一个数据框中。这是在 PySpark 中完成的,在我使用之前
dataframe_new =pd.concat(listName)
解决方案 1
from pyspark.sql.types import *
import pyspark.sql
from pyspark.sql import SparkSession, Row
customSchema = StructType([
StructField("col1", StringType(), True),
StructField("col2", StringType(), True),
StructField("col3", StringType(), True),
StructField("col4", StringType(), True),
StructField("col5", StringType(), True),
StructField("col6", StringType(), True),
StructField("col7", StringType(), True)
])
df = spark.createDataFrame(queried_dfs[0],schema=customSchema)
解决方案2我试过:(遍历数据框列表,但不知道如何组合它们
for x in ListOfDataframe
new_df=union_all()
但这总是创建一个 new_df
有什么帮助解决这个问题吗?
解决方案
即使列或列的顺序不同,这也是组合数据框列表的有用功能
def Zconcat(dfs):
return reduce(lambda df1, df2: df1.union(df2.select(df1.columns)), dfs)
def union_all(dfs):
columns = reduce(lambda x, y : set(x).union(set(y)), [ i.columns for i in dfs ] )
for i in range(len(dfs)):
d = dfs[i]
for c in columns:
if c not in d.columns:
d = d.withColumn(c, lit(None))
dfs[i] = d
return Zconcat(dfs)
然后将 union_all 传递给数据帧列表,例如
union_all([df1, df2, df3])
推荐阅读
- haskell - 分支预测对 Haskell 程序有多大影响?
- google-app-maker - 下拉小部件和相关模型
- go - goroutine 不尊重 ctx.done() 或正确退出
- android - 如何计算 Kotlin Android 中的单词数?
- ios - SpriteKit:使用 SKShapeNode UIBezierPath 圆角的方形到圆形动画
- python-3.6 - Python3:从 json 打印特定值
- go - 去 httputil.ReverseProxy 不覆盖主机头
- php - Laravel 队列监听器超时
- r - 可格式化对象的粗体行名称
- python - 在 Python 3 中,单字节 (\xd0) 打印为两个字节的序列 (\xc3\x90)