如果我的问题在本网站的某处,我提前致歉。我根据已知的词汇进行搜索,但没有一个能真正满足我的需求。
我有一个巨大的数据框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]
,而plcount20
是plcount[x]
这样可能吗?