将数据帧转换为 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 对象。关于如何做到这一点有什么想法吗?
使用文本流对象 StringIO
和 pd.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
我已经看到很多关于如何将数据帧分割成不同块的问题。我想知道如何将数据帧转换为与使用 chunksize 参数将 csv 文件加载到数据帧时得到的对象完全相同的对象,即
df = pd.read_csv(file_path, chunksize=1e5)
type(df)
>> pandas.io.parsers.TextFileReader
我想从包含不同块中的数据帧数据的数据帧重新创建一个相同的 TextFileReader 对象。关于如何做到这一点有什么想法吗?
使用文本流对象 StringIO
和 pd.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