【发布时间】:2015-02-14 20:48:00
【问题描述】:
为此提前道歉,但经过两个小时的搜索和尝试,我无法在这里得到正确的答案。我有一个数据框,通过 pandas io sql.read_frame() 填充。
被证明对我来说太多的专栏是dtypeint64。整数的格式为YYYYMMDD。例如20070530 - 2007 年 5 月 30 日。我尝试了一系列方法,最明显的是;
pd.to_datetime(dt['Date']) 和 pd.to_datetime(str(dt['Date']))
具有不同参数的功能的多种变化。
结果充其量只是将日期解释为时间。日期设置为1970-01-01 - 结果如上例1970-01-01 00:00:00.020070530
我还尝试了类似帖子中的各种.map() 函数。
我注意到根据np.date_range() 可以解释YYYYMMDD 格式的字符串值,但这是我看到的最接近解决方案的。
如果有人有答案,我将非常感激!
编辑:鉴于 Ed Chum 的回答,问题很可能与编码有关。 rep() 在数据帧的一个子集上产生:
OrdNo LstInvDt\n0
9 20070620\n1
11 20070830\n2
19 20070719\n3
21 20070719\n4
23 20070719\n5
26 20070911\n7
29 20070918\n8
31 0070816\n9
34 20070925\n10
这是LstInvDt dtype int64 的时候。
【问题讨论】:
-
to_datetime接受格式字符串,因此pd.to_datetime(str(t), format='%Y%m%d')应该可以工作:In [92]: t = 20070530 pd.to_datetime(str(t), format='%Y%m%d') Out[92]: Timestamp('2007-05-30 00:00:00') -
老实说,我以为是
uff-8,但显然发生了一些我不知道的事情。我将不得不再次查看 sql 导入部分...感谢您的帮助 @EdChum。你确实回答了我的问题,所以我会检查你的答案是否被接受。看来我会用今天的大部分时间来找出这个...... -
在我看来,新行字符并没有被删除,但它有点令人困惑,你似乎在哪里/为什么后面有一个索引序号,我会与存储在你的DB并与导出到csv进行比较