Преобразовать фрейм данных в объект pandas.io.parsers.TextFileReader (чанки) - PullRequest
1 голос
/ 07 июня 2019

Я видел довольно много вопросов о том, как разбить информационный фрейм на различные куски. Я хочу знать, как преобразовать фрейм данных в тот же объект, который вы получаете при загрузке csv-файла в фрейм данных с параметром chunksize, т. Е.

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

Я хочу воссоздать идентичный объект TextFileReader из фрейма данных, содержащий данные фрейма данных в различных фрагментах. Есть идеи как это сделать?

1 Ответ

1 голос
/ 07 июня 2019

С объектом текстового потока StringIO и pd.read_csv функция:

(df ниже содержит образец кадра данных)

In [216]: df
Out[216]: 
     Date  Name  Wage
0  5/1/19   Joe  $100
1  5/1/19   Sam  $120
2  5/1/19  Kate   $30
3  5/2/19   Joe  $120
4  5/2/19   Sam  $134
5  5/2/19  Kate   $56
6  5/3/19   Joe   $89
7  5/3/19   Sam   $90
8  5/3/19  Kate  $231

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  $100
1           1  5/1/19   Sam  $120
2           2  5/1/19  Kate   $30

Конечно, вы можете указать конкретный размер куска с помощью опции chunksize.

iterator : boolean, default False

Возвращает TextFileReader объект для итерации или получения кусков с get_chunk().

chunksize : int, default None

Возврат TextFileReader объект для итерации.

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

...