大熊猫数据框管理

时间:2020-03-25 15:41:45

标签: python pandas dataframe

我需要您的帮助才能管理熊猫df(约3000万行)。特别是,我需要从df中提取数据并创建具有特定形式的一些工作表(我将在csv中导出)。 在我的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 

请帮我提供优化的代码来完成此操作。 非常感谢

1 个答案:

答案 0 :(得分:0)

.loc运算符将非常快且易于实现,尤其是与您提出的循环相比:

sheet_subset = sheet.loc[(sheet['country']=="ITA") & (sheet['years'].isin([2017,2018])) & (sheet['product']==3312) & (sheet['partners'].isin(["FRA", "USA", "CHI"]))]