Управление большими pandas данными - PullRequest
0 голосов
/ 25 марта 2020

Мне нужна ваша помощь для управления pandas df (около 30 миллионов строк). В частности, мне нужно извлечь данные из df и создать несколько листов (которые я буду экспортировать в csv) с определенной формой c. В моем df у меня есть 4 переменные (страна, партнеры, годы, продукт), и для каждой страны и продукта мне нужен df с партнерами (в столбце) и годы (в строке). Это мои переменные:

country = "ITA"
years = [2017, 2018]
product = 3312
partners = ["FRA", "USA", "CHI"]

Данные, которые я должен извлечь, находятся в столбце «Значение» df. Я сделал очень медленный код, который создает «лист» для фрейма данных с тем, что мне нужно:

sheet=pd.DataFrame({"Partners" : partners})      
    for n in years:
        association = []
        for i in partners:
            association.append(round(df.loc[(df['Reporter'] == country) & (df['Partner'] == i) & (df['Year'] == n) & (df['Product'] == product), 'Value'].sum()/10**6 , 3)) # data are in bln
        sheet[n] = association 

Pls, помогите мне с оптимизированным кодом для выполнения этой операции. Большое спасибо

1 Ответ

0 голосов
/ 25 марта 2020

Оператор .lo c будет очень быстрым и простым в реализации, особенно по сравнению с l oop, который вы предлагаете:

sheet_subset = sheet.loc[(sheet['country']=="ITA") & (sheet['years'].isin([2017,2018])) & (sheet['product']==3312) & (sheet['partners'].isin(["FRA", "USA", "CHI"]))]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...