猿问

如何在python中循环列表时动态创建df?

def create_df(src,header=None):

    df =spark.read.csv(src, header=header)

    return df


result = source_df.filter(f.col('Job_name') == job_name).select(source_df['dfname'],source_df['srcpath']).collect()


for x in result:

    src=str('"' +x[1] + '"'.strip(' '))

    src = str(src)

    x[0] = create_df(src, header=True)   //throwing an uft-8 encod

结果是一个包含 2 列的列表,称为 dfname 和源路径,需要循环结果列表并根据 dfname 值需要动态创建传递 df 名称。


| dfname     | SPath        |

|------------+--------------|

| Account_Df | s3://path... |

| ProdMet_Df | s3://path... |

基于df名称需要创建dfnames吗?


预期输出 Account_Df 和 ProdMet_Df 两个独立的 dfs。


千万里不及你
浏览 401回答 1
1回答

回首忆惘然

如果您绝对确定需要这样做,您可以更新globals()字典以在全局(模块)命名空间中创建一个变量。你的最后一行代码应该是:    globals()[x[0]] = create_df(src, header=True)
随时随地看视频慕课网APP

相关分类

Python
我要回答