【发布时间】:2014-06-04 11:38:03
【问题描述】:
我的输入 CSV 有两个时间戳格式的日期时间列'开始时间'、'结束时间'。
我可以解析时间戳,但我无法将结果列设为 datetime64?!
无论我是否使用我的自定义日期格式化程序mdb_to_datetime() 或将其注释掉。
它们一直是“np.object”,它是“np.string”的包装器。 (这会在以后破坏日期算术。)
在 read_csv 之后尝试在结果对象(字符串)列上拼凑 cal['Start Time'].astype(np.datetime64) 也失败了。
from datetime import datetime
def mdb_to_datetime(ts):
"""Convert Access MDB to datetime"""
return datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M')
cal = pd.read_csv('my.csv', header=0,
usecols = ['Start Time','End Time','Summary'],
parse_dates = ['Start Time','End Time'] )
#, date_parser = mdb_to_datetime )
# my.csv looks like (uninteresting columns removed):
Start Time,End Time,Summary
"1209396600","1209429000","some event"
"1226163600","1226206800","another event"
附录: 1)感谢@merlin2011,现在这似乎可以满足我的需要,但是任何人都可以缩短这条线吗?
def mdb_to_datetime(ts):
return np.datetime64(datetime.fromtimestamp(ts).strftime('%Y-%m-%d %H:%M'))
2) 其他人是否认为这是一个文档错误,文档没有告诉您自定义日期格式化程序应该返回 np.datetime64 的任何地方?
【问题讨论】:
-
@merlin2011:
np.datetime64(mydatestring)有效(请恢复您已删除的答案!),刚才mdb_to_datetime()有半英里长。 -
我放回去了,因为一直在安装pandas,正准备更新。
-
我删除了后半部分,因为输出值看起来不正确。如果我弄清楚原因会再次更新。 :)
标签: python datetime csv pandas date-formatting