【问题标题】:Keeping the schema types from Pandas dataframe to Snowpark dataframe将模式类型从 Pandas 数据框保存到 Snowpark 数据框
【发布时间】:2022-10-05 19:55:28
【问题描述】:
Snowpark 有一个问题/错误,它不维护 Pandas 和 Snowpark 之间的类型,也不允许手动设置其架构。
例如,
df1 = session.sql(sql).to_pandas()
df2 = session.create_dataframe(df)
df1 和 TimestampType 上的时间戳字段已变为 LongType。
我也尝试存储架构并使用它,但结果相同。
df1 = session.sql(sql)
df1_schema = df1.schema
df1 = df1.to_pandas()
df2 = session.create_dataframe(df, df1_schema)
有没有人设法处理它?
这使我无法将DataFrame 写回表格,因为它必须是TimestampType 而不是LongType。
标签:
python
snowflake-cloud-data-platform
user-defined-functions
snowpark
【解决方案1】:
试图在 snowpark 中重新创建它,当使用 create_dataframe() 方法将 pandas df 转换为 snowpark df 时,TimestampType 似乎在内部更改为 LongType。
此外,在这种情况下,在 create_dataframe() 方法中指定模式参数并没有任何区别。
因此,一种方法是使用 to_timestamp() 方法将列显式更改为时间戳。
from snowflake.snowpark.functions import sql_expr
df1 = session.sql("select * from timestamp_test")
df1 = df1.to_pandas()
df2 = session.create_dataframe(df1)
colCast = df2.withColumn("T", sql_expr("to_timestamp(T::string)"))
colCast.show()