【问题标题】: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)

df1TimestampType 上的时间戳字段已变为 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()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-11
      • 1970-01-01
      • 2019-02-09
      • 2016-12-12
      • 2014-09-28
      • 1970-01-01
      • 2017-10-27
      相关资源
      最近更新 更多