Есть ли более быстрый способ создания файлов .csv в качестве альтернативы групповому и цикличному? - PullRequest
2 голосов
/ 12 апреля 2020

Мне нужно сгенерировать десятки CSV-файлов с миллионами строк и десятков столбцов. В настоящее время я генерирую файлы, выполняя groupby столбцов A и B и циклически создавая файлы с to_csv. Ниже приведен пример того, что я пытаюсь сделать. Есть ли более быстрая техника? Мой фактический фрейм данных занимает более 10 минут и становится довольно болезненным, и это будет полезно для нескольких проектов.

import pandas as pd
import numpy as np

df = pd.DataFrame(np.random.randint(0, 3, size=(10000,3)), columns=list('ABC'))
%timeit for (a,b), x in df.groupby(['A', 'B']): x.to_csv(f'{a}_Invoice_{b}.csv', index=False)

Время истекло:

45.2 ms ± 1.58 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)

Также Я создал функцию, у которой было похожее время, но я хотел опубликовать ее, чтобы людям было проще изменить ее для использования %timeit, если ответ более чем на одну строку кода.

import pandas as pd
import numpy as np

def generate_invoices(df):
    for (a,b), x in df.groupby(['A', 'B']):
        x.to_csv(f'{a}_Invoice_{b}.csv', index=False)
    return

df = pd.DataFrame(np.random.randint(0, 3, size=(10000,3)), columns=list('ABC'))
%timeit generate_invoices(df)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...