Dask调用read_sql_table生成额外time__1列的必要性及处理方案问询
问题原因说明
你遇到的time__1重复列是Dask的列名去重机制导致的:你指定了time作为索引列,但Dask默认会读取SQL表的所有字段作为普通列,两个重名的time字段同时存在时,Dask就会把普通列的time重命名为time__1,这列的内容和索引列完全一致,属于冗余数据。
对应问题解答
- 是否为必要字段?
不是必要字段,属于完全重复的冗余数据。 - 能否直接删除且无负面影响?
可以直接删除,不会产生任何副作用。后续需要用到时间字段时直接读取DataFrame的索引即可,不影响任何计算、导出、持久化操作,删除示例代码如下:
dd_ticks = dd_ticks.drop("time__1", axis=1)
- 调用
dd.read_sql_table阶段是否可以避免生成?
可以,只要在调用时通过columns参数显式指定你需要读取的普通列,不要把已经设为索引的time列包含在内即可,示例代码如下:
dd_ticks = dd.read_sql_table( table_name="ticks", con=sql_uri, index_col="time", columns=["symbol", "price", "volume"] )
指定后Dask只会拉取你指定的三个普通列,加上索引列time,不会出现重复的time__1列。
内容的提问来源于stack exchange,提问作者hg628193hg
相关产品推荐
相关产品推荐

