3 回答

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要?jiǎng)?chuàng)建一個(gè)映射/字典d將組鏈接到其計(jì)算值。接下來(lái),map它到列Group并使用 numpy ufunc `reduce of multiply 創(chuàng)建所需的輸出
import numpy as np
d = {1: 3, 2: 5, 3: 10}
df['output'] = np.multiply.reduce([df.Group.map(d), df.val1, df.val2])
Out[243]:
Group val1 val2 output
0 1 12 3 108
1 1 19 4 228
2 2 23 9 1035
3 3 59 74 43660
4 3 2 44 880
如果你不想使用numpy,只需對(duì)每一列進(jìn)行乘法
df['output'] = df.Group.map(d) * df.val1 * df.val2

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超4個(gè)贊
如果該字符串是您正在尋找的文字輸出,那么您可以為每個(gè)組創(chuàng)建一個(gè)字典并映射值。然后只需將字符串添加到末尾:
dct = {1:3, 2:5, 3:10}
df['output'] = df['Group'].map(dct).astype(str) + '*val1*val2'
df
Out[1]:
Group val1 val2 output
0 1 12 3 3*val1*val2
1 1 19 4 3*val1*val2
2 2 23 9 5*val1*val2
3 3 59 74 10*val1*val2
4 3 2 44 10*val1*val2
現(xiàn)在,我逐字記錄了你的輸出,但如果你試圖將這些值相乘:),那么你可以這樣實(shí)現(xiàn):
dct = {1:3, 2:5, 3:10}
df['output'] = df['Group'].map(dct) * df['val1'] * df['val2']
df
Out[1]:
Group val1 val2 output
0 1 12 3 108
1 1 19 4 228
2 2 23 9 1035
3 3 59 74 43660

TA貢獻(xiàn)1807條經(jīng)驗(yàn) 獲得超9個(gè)贊
我想你可以使用 apply
df.groupby([“group”, “val1”, “val2”]).apply(lambda x: x)
添加回答
舉報(bào)