2016-09-19 36 views
0

我处理的一个大的数据集,因此读它在熊猫我用read_csvchunk=选项。熊猫 - 是否可以使用chunk =参数“倒带”read_csv?

data = pd.read_csv("dataset.csv", chunksize=2e5) 

然后我通过以下方式

any_na_cols = [chunk.do_something() for chunk in data] 

的问题是,当我想要做相同的方式别的东西如上述,我会得到一个空的结果,因为在分块的数据帧进行操作我已经迭代了分块的DataFrame。因此我必须再次拨打data = pd.read_csv("dataset.csv", chunksize=2e5)才能执行下一个操作。

很可能是有没有问题,但由于某些原因,我觉得这种做法在某种程度上是不雅。是不是有像data.rewind()或类似的方法,使我能够重新遍历块?我在文档中找不到类似的东西。或者,也许我正在用这种方法解决一些设计错误?

回答

1

我不认为这是一个好主意,再次阅读您的CSV - 你会增加一倍的IOs。在同一次迭代中更好地“做别的事”:

any_na_cols = pd.DataFrame() 

for chunk in pd.read_csv("dataset.csv", chunksize=2e5) 
    any_na_cols = pd.concat([any_na_cols, chunk.do_something()], ignore_index=True) 
    # do something else 
+0

这很有道理,谢谢。尽管如此,这并不能回答原来的问题。有没有可以倒带的选项? – Matek