You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

使用DolphinDB Python API上传DataFrame指定列类型遇Pandas警告

指定DolphinDB列类型的官方方法及警告处理

官方推荐的列类型指定方式

无需修改pandas DataFrame的属性,直接通过定义DolphinDB表结构(schema)来指定列类型,这是官方推荐的无警告方案:

  1. 构造表结构Schema
    使用DolphinDB Python API提供的tableSchema函数或直接定义列类型列表,明确指定每列对应的DolphinDB数据类型:
import dolphindb as ddb
import pandas as pd

# 示例DataFrame
df = pd.DataFrame({
    'trade_time': ['2024-01-01 10:00:00', '2024-01-01 10:01:00'],
    'price': [100.5, 101.2]
})

# 定义DolphinDB表结构:trade_time设为DATETIME类型,price设为DOUBLE类型
schema = ddb.tableSchema([
    ('trade_time', ddb.DT_DATETIME),
    ('price', ddb.DT_DOUBLE)
])
  1. 带Schema上传数据
    有两种常见上传方式:
  • 方式一:先创建持久化表再插入
    适用于写入DFS数据库的场景:
# 连接服务器
s = ddb.session()
s.connect("localhost", 8848, "admin", "123456")

# 创建数据库与表
s.run("""
    db = database("dfs://tradeDB", VALUE, 2024)
    tb = db.createTable({schema}, "tradeTable")
""", schema=schema)

# 插入数据
s.run("tb.append!{df}", df=df)
  • 方式二:直接上传临时表
    适用于内存临时表场景:
s.upload({'trade_data': df}, schema=schema)

若坚持使用__DolphinDB_Type__属性的警告抑制

如果仍需要通过给DataFrame添加__DolphinDB_Type__属性的方式指定类型,可以针对性抑制Pandas的UserWarning:

import warnings
from pandas.errors import UserWarning

# 抑制DataFrame自定义属性触发的警告
warnings.filterwarnings("ignore", category=UserWarning, message="^Pandas doesn't allow adding new attributes to DataFrame instances via dot assignment.*")

总结

优先使用Schema指定法,这是官方设计的标准流程,既能精准控制列类型,又不会触发Pandas警告;仅在特殊场景下,才考虑使用属性法并配合警告抑制。

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

火山引擎 最新活动