将数据帧转换为 pandas.io.parsers.TextFileReader 对象(块)

Convert dataframe into pandas.io.parsers.TextFileReader object (chunks)

我已经看到很多关于如何将数据帧分割成不同块的问题。我想知道如何将数据帧转换为与使用 chunksize 参数将 csv 文件加载到数据帧时得到的对象完全相同的对象,即

df = pd.read_csv(file_path, chunksize=1e5)
type(df)
>> pandas.io.parsers.TextFileReader

我想从包含不同块中的数据帧数据的数据帧重新创建一个相同的 TextFileReader 对象。关于如何做到这一点有什么想法吗?

使用文本流对象 StringIOpd.read_csv 函数:

(下面的df包含示例数据框)

In [216]: df
Out[216]: 
     Date  Name  Wage
0  5/1/19   Joe  0
1  5/1/19   Sam  0
2  5/1/19  Kate   
3  5/2/19   Joe  0
4  5/2/19   Sam  4
5  5/2/19  Kate   
6  5/3/19   Joe   
7  5/3/19   Sam   
8  5/3/19  Kate  1

In [217]: from pandas.compat import StringIO

In [218]: reader = pd.read_csv(StringIO(df.to_csv()), iterator=True)

In [219]: type(reader)
Out[219]: pandas.io.parsers.TextFileReader

In [220]: reader.get_chunk(3)
Out[220]: 
   Unnamed: 0    Date  Name  Wage
0           0  5/1/19   Joe  0
1           1  5/1/19   Sam  0
2           2  5/1/19  Kate   

当然,您可以通过chunksize选项指定具体的块大小。

iterator : boolean, default False

Return TextFileReader object for iteration or getting chunks with get_chunk().

chunksize : int, default None

Return TextFileReader object for iteration.

http://pandas.pydata.org/pandas-docs/stable/user_guide/io.html#io-chunking