簡體   English   中英

如何將pandas數據幀相乘並保留行鍵

[英]How to multiply pandas dataframes and preserve row keys

我正在努力將數據幀相乘並保留行鍵。

我有兩個文件,叫他們說F1和F2。 F1具有多部分組密鑰(g1,g2,g3),兩部分類型密鑰(k1,k2)和一些權重(r1,r2)。 F2具有每個Type鍵的一系列值。

我想在k1和k2上加入它們,並為每個n乘以r1和r2。

我認為groupby和dataframe multiply應該可以工作,但我看不出怎么做。 我唯一需要做的就是合並,然后逐列相乘,但它超級慢。

F1
g1  g2  g3  k1  k2  r1  r2
A   A   A   A   A   1   2
A   A   A   A   B   3   4
A   A   B   A   B   2   3

F2
k1  k2  n   r1  r2
A   A   1   0   1
A   A   2   1   1
A   A   3   1   0
A   B   1   3   4
A   B   2   4   4
A   B   3   4   3
A   C   1   1   1
A   C   3   4   5
A   C   2   3   4

Result
g1  g2  g3  k1  k2  n   r1  r2
A   A   A   A   A   1   0   2
A   A   A   A   A   2   1   2
A   A   A   A   A   3   1   0
A   A   A   A   B   1   9   16
A   A   A   A   B   2   12  16
A   A   A   A   B   3   12  12
A   A   B   A   B   1   6   12
A   A   B   A   B   2   8   12
A   A   B   A   B   3   8   9

謝謝

mrg = F1.merge(F2, on=['k1', 'k2'])

mrg['r1'] = mrg.filter(like='r1').prod(1)
mrg['r2'] = mrg.filter(like='r2').prod(1)
drops = ['r1_x', 'r1_y', 'r2_x', 'r2_y']
mrg.drop(drops, axis=1)

在此輸入圖像描述

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM