在for循环中为pysparkDataframe创建动态名称

sczxawaw  于 2021-07-12  发布在  Spark
关注(0)|答案(1)|浏览(397)

我有一个主数据框df\u prod,在一定的年份范围内,我想从主df中过滤那些记录,如果记录的数量超过0,将把它们推到一个单独的df(即df\u prod\u year)中,并将该年份附加到一个列表中,以便以后使用。
我正在尝试为for循环中的dataframe创建动态名称,如下所示,如果记录大于0,我将添加到单独的dfu年份中,并尝试将该年份附加到另一个列表中,如下所示。

PROD_years_list = []
year=int(datetime.datetime.today().year)
for i in range (year, 2016, -1 ):
  print(i)
  df_PROD_{i} = df_PROD.filter(col("Year") == i)
  if df_PROD_{i}.count() > 0:
    PROD_years_list.append(i)
print(PROD_years_list)

但是我得到了无效的语法错误:

df_PROD_{i} = df_PROD.filter(col("Year") == i)

如何在for循环中动态命名Dataframe?谢谢。

8nuwlpux

8nuwlpux1#

根据你的需要,使用dict可能是一个更好的选择。将每个Dataframe和相应的年份存储为一个键:

PROD_years = {}
year=int(datetime.datetime.today().year)

for i in range (year, 2016, -1 ):
  df = df_PROD.filter(col("Year") == i)
  if df.count() > 0:
    PROD_years[i] = df

print(PROD_years)

相关问题