【发布时间】:2015-02-24 18:11:47
【问题描述】:
我正在尝试以这种形式读取 csv:
2014,92,1931,6.234,10.14
2014,92,1932,5.823,9.49
2014,92,1933,5.33,7.65
2014,92,1934,4.751,6.19
2014,92,1935,4.156,5.285
2014,92,1936,3.962,4.652
2014,92,1937,3.74,4.314
2014,92,1938,3.325,3.98
2014,92,1939,2.909,3.847
2014,92,1940,2.878,3.164
明确地说,这是(年、一年中的某天、2400 小时时间和 2 列值)。
我在上一个问题中对此事有过一些想法,但无济于事,事实证明这是一个问题......(Create an indexed datetime from date/time info in 3 columns using pandas)
如上述问题所述,以下“read_csv”尝试
df = pd.read_csv("home_prepped.dat", parse_dates={"dt" : [0,1,2]},
date_parser=parser, header=None)
触发类型错误:
TypeError: parser() takes exactly 1 argument (3 given)
这是由于“parse_dates”参数中包含 0,1,2。 我也尝试将它们放在双括号 [[0,1,2]] 中并得到:
ValueError: [0, 1, 2] is not in list
我已经通过设置 parse_dates=True 来解决这个问题,并认为我可以在 set_index 之后得到这个:
TypeError: 必须是字符串,而不是 numpy.int64
我的解析器也被格式所困扰,我读过关于“一年中的一天”值进行零填充的相互矛盾的故事。我的不是零填充的,但即使如此,除了错误之外,我的格式已经挂在第一个值上,年份!这是解析器:
def parser(x):
return pd.datetime.strptime(x, '%Y %j %H%M')
所以是的,我有错误说“2014”无法识别,“92”(一年中的某天)无法识别,但受到鼓励,因为至少 strptime 能够“通过”尝试格式。
我想知道这是否与我的数据有关。
我正在寻找一种方法来将此日期时间信息索引为日期时间,但我遇到了问题。我已经继续填充了一些朱利安,以防有人想测试格式是否存在填充问题,见下文:
2014,092,1931,6.234,10.14
2014,092,1932,5.823,9.49
2014,092,1933,5.33,7.65
2014,092,1934,4.751,6.19
2014,092,1935,4.156,5.285
2014,092,1936,3.962,4.652
2014,092,1937,3.74,4.314
2014,092,1938,3.325,3.98
2014,092,1939,2.909,3.847
2014,092,1940,2.878,3.164
感谢你们的帮助,我开始真的很沮丧:S
【问题讨论】:
标签: datetime csv pandas julian-date