我正在尝试以这种形式读取 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 列值)。
我在上一个问题中对此事有过一些想法,但无济于事,事实证明这是一个问题......(使用 pandas 从 3 列中的日期/时间信息创建索引日期时间)
如上述问题所述,以下“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