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

时间:2019-01-16 14:10:29

标签: python dataframe pyspark

gsutil ls -l gs://[bucket-name]/ | sort -k 2

结果是一个具有两列的列表,称为dfname和源路径,需要循环结果列表,并且需要基于dfname值动态创建传递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

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

预期输出 Account_Df和ProdMet_Df两个单独的df。

1 个答案:

答案 0 :(得分:0)

如果绝对确定需要执行此操作,则可以更新globals()字典以在全局(模块)名称空间中创建变量。最后一行代码应该是:

    globals()[x[0]] = create_df(src, header=True)