PySpark中如何为DataFrame名称添加动态日期变量?
动态命名Spark DataFrame的正确方法
你写的代码报错是因为Python不允许把值赋值给字符串表达式(比如f"{x}"),赋值语句的左边必须是合法的变量名,不能是动态生成的字符串。下面给两种可行的实现方式:
方法一:用字典存储(推荐)
用字典来管理动态命名的DataFrame,既安全又容易维护:
from datetime import date # 把日期格式转成你要的"年_月缩写_日"格式 today_formatted = date.today().strftime("%Y_%b_%d").lower() # 用字典存储DataFrame df_store = {} df_store[f"df_{today_formatted}"] = spark.sql("select * from tablename") # 调用时通过字典键获取对应的DataFrame df_store["df_2024_jul_05"].show()
方法二:直接动态生成全局变量(不推荐)
如果一定要生成独立的变量名,可以修改全局命名空间,但这种方式会污染全局变量,后期不好追踪:
from datetime import date today_formatted = date.today().strftime("%Y_%b_%d").lower() # 动态生成变量并赋值 globals()[f"df_{today_formatted}"] = spark.sql("select * from tablename") # 之后直接用生成的变量名操作 df_2024_jul_05.show()
注意:默认date.today()转字符串是2024-07-05格式,用strftime("%Y_%b_%d")可以得到2024_Jul_05,再加.lower()就变成你要的小写缩写格式。
内容的提问来源于stack exchange,提问作者Rijoy Thanalil
相关产品推荐
相关产品推荐

