如何将numpy.datetime64对象转换为datetime.datetime(或Timestamp)?
在以下代码中,我创建了datetime,timestamp和datetime64对象.
import datetime
import numpy as np
import pandas as pd
dt = datetime.datetime(2012, 5, 1)
# A strange way to extract a Timestamp object, there's surely a better way?
ts = pd.DatetimeIndex([dt])[0]
dt64 = np.datetime64(dt)
In [7]: dt
Out[7]: datetime.datetime(2012, 5, 1, 0, 0)
In [8]: ts
Out[8]: <Timestamp: 2012-05-01 00:00:00>
In [9]: dt64
Out[9]: numpy.datetime64('2012-05-01T01:00:00.000000+0100')
Run Code Online (Sandbox Code Playgroud)
注意:从时间戳中获取日期时间很容易:
In [10]: ts.to_datetime()
Out[10]: datetime.datetime(2012, 5, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
但是我们如何从()中提取datetime或者?Timestampnumpy.datetime64dt64 …
我正在使用Python 2.6.4中的sqlite3模块在SQLite数据库中存储日期时间.插入它非常简单,因为sqlite会自动将日期转换为字符串.问题是,当它读取它时它会以字符串形式返回,但我需要重建原始日期时间对象.我该怎么做呢?
我想将Pandas数据帧附加到名为"NewTable"的sqlite数据库中的现有表中.NewTable有三个字段(ID,Name,Age),ID是主键.我的数据库连接:
import sqlite3
DB='<path>'
conn = sqlite3.connect(DB)
Run Code Online (Sandbox Code Playgroud)
我要附加的数据框:
test=pd.DataFrame(columns=['ID','Name','Age'])
test.loc[0,:]='L1','John',17
test.loc[1,:]='L11','Joe',30
Run Code Online (Sandbox Code Playgroud)
如上所述,ID是NewTable中的主键.键'L1'已经在NewTable中,但键'L11'不在.我尝试将数据框附加到NewTable.
from pandas.io import sql
sql.write_frame(test,name='NewTable',con=conn,if_exists='append')
Run Code Online (Sandbox Code Playgroud)
这会引发错误:
IntegrityError: column ID is not unique
Run Code Online (Sandbox Code Playgroud)
错误可能是键'L1'已经在NewTable中.数据框中的任何条目都不会附加到NewTable.但是,我可以毫无问题地将具有新密钥的数据帧附加到NewTable.
是否有一种简单的方法(例如,没有循环)将Pandas数据帧附加到sqlite表,以便附加数据帧中的新键,但表中已存在的键不是?
谢谢.