0

我一直在尝试(~480MB, 5,250,000 records, stock price daily data -dt, o, h, l, c, v, val , adj, fv, sym, code - for about 4,500 instruments)使用read_csv. 它运行良好,并创建了 DataFrame。但是,在转换为面板时,几只股票的值与原始 csv 文件中的值相差甚远。

然后我尝试在 中使用chunksize参数read_csv,并使用 for 循环:

reader = read_csv("bigfile.csv",index_col=[0,9],parse_dates=True,names=['n1','n2',...,'nn'], chunksize=100000)

new_df = DataFrame(reader.get_chunk(1))

for chunk in reader:
    new_df = concat(new_df, chunk)

这会读入数据,但是:

  1. 转换为面板时我得到相同的错误值(编辑:)
  2. 它比普通的需要更长的时间read_csv(没有迭代器)

任何想法如何解决这个问题?

编辑:更改了问题以反映问题 - 数据框很好,转换为面板是问题。发现即使在拆分输入 csv 文件、合并然后转换为面板后仍出现错误。如果我维护一个多索引 DataFrame,则没有问题,并且值表示正确。

4

2 回答 2

1

DataFrame to Panel 代码中的一些错误已得到修复。请尝试使用最新的 pandas 版本(最好是即将推出的 0.10),如果您仍有问题,请告诉我们。

于 2012-11-28T04:16:54.667 回答
0

如果您知道一些特定的值是关闭的,您可能只需在 csv 文件中专门检查这些行。您还应该查看有关的文档csv,特别是在方言Sniffer 类方面。您可能能够找到一些设置来正确检测文件的分隔方式。

如果您发现当您只查看特定行时错误消失了,那可能意味着某处存在错误/缺失的换行符,导致事情出错。

最后,如果您似乎无法找到正确/错误行的模式,您可以尝试(随机或以其他方式)选择 csv 文件中的行子集,并查看是否由于文件大小而发生错误(我猜这不太可能,但我不确定)。

于 2012-08-23T06:53:27.337 回答