亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

對不同組的 python pandas 進行計算

對不同組的 python pandas 進行計算

慕姐8265434 2023-10-18 21:30:59
我有一個包含不同組的熊貓數據集。對于每個組,我想應用不同的計算。最好的方法是什么?例如,輸入數據Group val1 val21      12   31      19   42      23   93      59   743      2    44輸出數據Group val1 val2 output1      12   3   3*val1*val21      19   4   3*val1*val22      23   9   5*val1*val23      59   74  10*val1*val23      2    44  10*val1*val2
查看完整描述

3 回答

?
慕妹3242003

TA貢獻1824條經驗 獲得超6個贊

您需要創建一個映射/字典d將組鏈接到其計算值。接下來,map它到列Group并使用 numpy ufunc `reduce of multiply 創建所需的輸出


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,只需對每一列進行乘法


df['output'] = df.Group.map(d) * df.val1 * df.val2


查看完整回答
反對 回復 2023-10-18
?
浮云間

TA貢獻1829條經驗 獲得超4個贊

如果該字符串是您正在尋找的文字輸出,那么您可以為每個組創建一個字典并映射值。然后只需將字符串添加到末尾:


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

現在,我逐字記錄了你的輸出,但如果你試圖將這些值相乘:),那么你可以這樣實現:


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


查看完整回答
反對 回復 2023-10-18
?
函數式編程

TA貢獻1807條經驗 獲得超9個贊

我想你可以使用 apply

df.groupby([“group”, “val1”, “val2”]).apply(lambda x: x)


查看完整回答
反對 回復 2023-10-18
  • 3 回答
  • 0 關注
  • 185 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號