向多指标的子索引添加计算行的矢量化方法 - python

我无法理解如何使用groupby解决以下示例:

df = pd.DataFrame(
    {
        'kitchen': ['galley', 'house', 'restaurant', 'caterer'] * 3,
        'products': ['chocolate', 'tart', 'pie', ] * 4,
        'menu_a': [pd.np.random.randint(100000, 999999) for _ in range(12)],
        'menu_b': [pd.np.random.randint(100000, 999999) for _ in range(12)],
        'menu_c': [pd.np.random.randint(100000, 999999) for _ in range(12)]
    }
).set_index(['kitchen', 'products']).sort_index()

df

我想做的是用每个厨房的馅饼加蛋art的总和代替每个厨房的“馅饼”和“蛋art”行。

向多指标的子索引添加计算行的矢量化方法 - python

因此,例如,在galley kitchen中,products下的新行将为pastries,并且menu_a下的值将为333163+612456 = 945619 x kitchen x product s中的每一个。

我尝试了许多版本的menu stack()unstack()混合在一起,但无法完全得到结果。另一种方法是在外部迭代执行此操作,这很麻烦,这是我经常遇到的问题。想知道如何正确做。

参考方案

按第二级选择行,求和并添加第二级:

df1 = (df.loc[pd.IndexSlice[:, ['pie','tart']], :]
         .sum(level=0)
         .assign(products='total')
         .set_index('products', append=True))

然后将其连接到原始位置并按列表删除使用的值:

df = pd.concat([df, df1]).drop(['pie','tart'], level=1).sort_index()
print (df)
                       menu_a   menu_b   menu_c
kitchen    products                            
caterer    chocolate   907615   167480   921843
           total       749664   786464   872046
galley     chocolate   939850   382545   525525
           total      1204359   907760  1267475
house      chocolate   701797   106570   572014
           total      1215235  1058951   812935
restaurant chocolate   734501   637600   216367
           total      1846097   345020   517969

在返回'Response'(Python)中传递多个参数 - python

我在Angular工作,正在使用Http请求和响应。是否可以在“响应”中发送多个参数。角度文件:this.http.get("api/agent/applicationaware").subscribe((data:any)... python文件:def get(request): ... return Response(seriali…

Python exchangelib在子文件夹中读取邮件 - python

我想从Outlook邮箱的子文件夹中读取邮件。Inbox ├──myfolder 我可以使用account.inbox.all()阅读收件箱,但我想阅读myfolder中的邮件我尝试了此页面folder部分中的内容,但无法正确完成https://pypi.python.org/pypi/exchangelib/ 参考方案 您需要首先掌握Folder的myfo…

python JSON对象必须是str,bytes或bytearray,而不是'dict - python

在Python 3中,要加载以前保存的json,如下所示:json.dumps(dictionary)输出是这样的{"('Hello',)": 6, "('Hi',)": 5}当我使用json.loads({"('Hello',)": 6,…

R'relaimpo'软件包的Python端口 - python

我需要计算Lindeman-Merenda-Gold(LMG)分数,以进行回归分析。我发现R语言的relaimpo包下有该文件。不幸的是,我对R没有任何经验。我检查了互联网,但找不到。这个程序包有python端口吗?如果不存在,是否可以通过python使用该包? python参考方案 最近,我遇到了pingouin库。

Python ThreadPoolExecutor抑制异常 - python

from concurrent.futures import ThreadPoolExecutor, wait, ALL_COMPLETED def div_zero(x): print('In div_zero') return x / 0 with ThreadPoolExecutor(max_workers=4) as execut…