数据帧包含dytpe为datetime64[s]的索引.

df
           ticker   close
2008-01-28   aacg  0.7380
2008-01-29   aacg  0.6797
2008-01-30   aacg  0.6603
2008-01-31   aacg  0.7418
2008-02-01   aacg  0.7387

df写入表quote:

df.to_sql('quote',con=engine,index=True)

在PostgreSQL中显示记录:

select * from quote;

        index        | ticker | close  
---------------------+--------+--------
 2008-01-28 00:00:00 | aacg   |  0.738
 2008-01-29 00:00:00 | aacg   | 0.6797
 2008-01-30 00:00:00 | aacg   | 0.6603
 2008-01-31 00:00:00 | aacg   | 0.7418
 2008-02-01 00:00:00 | aacg   | 0.7387  

显示表格 struct :

  \d quote
                         Table "public.quote"
 Column |            Type             | Collation | Nullable | Default 
--------+-----------------------------+-----------+----------+---------
 index  | timestamp without time zone |           |          | 
 ticker | text                        |           |          | 
 close  | double precision            |           |          | 
Indexes:
    "ix_quote_index" btree (index)

怎样才能使记录写成如下格式和索引为date的格式?

  index      | ticker | close  
------------+--------+--------
 2008-01-28  | aacg   |  0.738
 2008-01-29  | aacg   | 0.6797
 2008-01-30  | aacg   | 0.6603
 2008-01-31  | aacg   | 0.7418
 2008-02-01  | aacg   | 0.7387  

如果我用df.index.astype('str')df.index转换为字符串,数据库中的index类型将是text,而to_sql是意外的!

推荐答案

将df时间戳列更改为日期:

# Convert index to date data type
df.index = df.index.date

df.to_sql('quote', con=engine, index=True, index_label='idx_quote_index')

或者,在Postgres中,将该列更改为Date:

ALTER TABLE quote 
ALTER COLUMN index TYPE date 
USING index::date;

我不建议将"index"作为任何SQL数据库中的列名,因为它是SQL中的保留关键字,因此每当在查询中引用它时,都需要将其括在双引号中.例如:

SELECT "index", ticker, close
FROM quote;

因此,除了更改该df列的数据类型外,还应考虑更改其名称.

Python-3.x相关问答推荐

Pandas 中每行的最大值范围

网站抓取:当我使用Chrome DevTools中的网络选项卡时,找不到正确的URL来提供我想要的数据

重复数组直到一定长度 groupby pandas

Pandas groupby 然后 for each 组添加新行

在 pytest 中,如何测试 sys.exit('some error message')?

asyncio.as_completed() 应该接受 `Iterable`,但如果输入是 `Generator` 就会崩溃?

Pygame 错误地渲染等距图像

在不使用字符串方法的情况下查找字符串最后一个单词的长度 - Python

pymongo 失败并出现错误未定义

spinbutton调整up/down箭头

使用一周的特定第一天将每日日期转换为每周

python中是否有大于但小于函数?

Visual Studio Code 中的 Python 3.x 类型提示

pythondecorator中的变量范围

pip install dryscrape 失败并显示错误:[Errno 2] 没有这样的文件或目录:'src/webkit_server'?

PIL 在图像上绘制半透明方形覆盖

当 None 被传递时,如何将默认值应用于 python 数据类字段?

为什么 TensorFlow 的 `tf.data` 包会减慢我的代码速度?

将列表列表转换为Python中的字典字典

如何删除目录? os.removedirs 和 os.rmdir 是否只用于删除空目录?