You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowpark Session从Pandas DataFrame创建DataFrame失败求助

从Pandas DataFrame创建Snowpark DataFrame时触发类型错误

环境信息

  • snowflake-snowpark-python版本:1.8.0
  • pandas版本:2.1.1
  • Python版本:3.10.0

执行代码

import pandas as pd

df = pd.DataFrame(data=[("11111P", 1)], columns=["LOCATION_CODE", "LOCATION_KEY"])
print(pd.__version__) # 输出2.1.1
print(isinstance(df, pd.DataFrame)) # 返回True
sf_df = session.create_dataframe(df)
sf_df.write.mode("overwrite").save_as_table("LOCATION")
session.close()

报错信息(翻译后)

1953     raise TypeError("create_dataframe() 不接受Row对象。")
1955 if not isinstance(data, (list, tuple)) and (
1956     未安装pandas
1957     or (已安装pandas但输入不是pandas.DataFrame类型)
1958 ):
-> 1959     raise TypeError(
1960         "create_dataframe() 仅接受列表、元组或pandas DataFrame类型的数据。"
1961     )
1963 # 检查是否为Pandas DataFrame,若是则写入临时表并返回Snowpark DataFrame
1965 if installed_pandas and isinstance(data, pandas.DataFrame):

问题分析与解决方法

核心原因

尽管本地代码验证传入的是标准Pandas DataFrame,但Snowpark内部导入的pandas模块与当前环境使用的pandas并非同一个实例,导致内部类型检测失败。

解决方案

方案1:绕过类型检测,手动构造数据传入

将Pandas DataFrame转为列表格式,同时指定Snowpark Schema,避免依赖内部类型判断:

from snowflake.snowpark.types import StringType, IntegerType, StructType, StructField

# 定义表结构
schema = StructType([
    StructField("LOCATION_CODE", StringType()),
    StructField("LOCATION_KEY", IntegerType())
])

# 转换数据格式并创建Snowpark DataFrame
sf_df = session.create_dataframe(df.values.tolist(), schema=schema)
sf_df.write.mode("overwrite").save_as_table("LOCATION")

方案2:对齐依赖版本

snowflake-snowpark-python 1.8.0对pandas 2.x版本兼容性较差,可选择:

  • 升级snowpark到1.10.0及以上版本(官方已适配pandas 2.x):
pip install snowflake-snowpark-python==1.10.0 --upgrade
  • 或者降级pandas到1.5.x系列(snowpark 1.8.0官方推荐版本):
pip install pandas==1.5.3 --force-reinstall

方案3:排查多pandas实例问题

打印Snowpark内部和本地pandas的文件路径,确认是否存在多个实例:

from snowflake.snowpark import dataframe
print("Snowpark内部pandas路径:", dataframe.pandas.__file__)
print("本地环境pandas路径:", pd.__file__)

若路径不同,需清理虚拟环境后重新安装所有依赖,确保环境内只有一套pandas实例。

内容的提问来源于stack exchange,提问作者henjiFire

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.08 22:30:05