通过拟合迭代创建多个数据框

时间:2019-06-14 19:35:00

标签: python-3.x pyspark-sql

如果我的问题在本网站的某处,我提前致歉。我根据已知的词汇进行搜索,但没有一个能真正满足我的需求。

我有一个巨大的数据框df,其日期列是字符串数据类型,如下所示:

+------------+
|REP_WORK_DAY|
+------------+
|  2019-05-27|
|  2019-05-28|
|  2019-05-28|
|  2019-05-28|
|  2019-05-29|
+------------+

数据框还有许多其他列,为简单起见,我没有显示。我想每天通过过滤df来创建10个数据帧。

我正在手动执行以下操作:

    df20=df.filter(df.REP_WORK_DAY == "2019-05-20")
    df21=df.filter(df.REP_WORK_DAY == "2019-05-21")
    df22=df.filter(df.REP_WORK_DAY == "2019-05-22")
    df23=df.filter(df.REP_WORK_DAY == "2019-05-23")
etc...

    df20.createOrReplaceTempView("df20")
    df21.createOrReplaceTempView("df21")
    df22.createOrReplaceTempView("df22")
    df23.createOrReplaceTempView("df23")
etc...

有没有一种方法可以使用for循环,所以它是这样的(伪代码):

    for x in range(20,31):
    y=20
    df[x]=df.filter(df.REP_WORK_DAY == "2019-05-[y]")
    y=y+1

for x in range(20,31)
df[x].createOrReplaceTempView("df[x]")

同样,有一种方法可以在SQL代码中迭代变量。例如,创建上面提到的数据框后,我需要运行以下SQL代码:

spark.sql("""SELECT LOT_ID, COUNT(DISTINCT PHOTO_LAYER) as PL_COUNT
        FROM df20
        WHERE VAR A like '%BOO%'
        GROUP BY LOT_ID
        """).createOrReplaceTempView("plcount20")

在SQL脚本中,df20本质上是df[x],而plcount20plcount[x]

这样可能吗?

0 个答案:

没有答案