第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

根據(jù)特定列的條件將兩個(gè)數(shù)據(jù)幀相乘的有效方法

根據(jù)特定列的條件將兩個(gè)數(shù)據(jù)幀相乘的有效方法

九州編程 2024-01-15 21:18:21
我想根據(jù)條件以有效的方式將兩個(gè)數(shù)據(jù)幀 df1 和 df2 相乘。df1:df1 = pd.DataFrame(columns=['user_id', 'gender', 'value_1', 'value_2', 'value_3'], data = [[112,0,50,60,70], [73,10,20,40,55],[61, 0, 15, 30, 45]])    user_id   gender   value_1   value_2   value_30   112       0         50         60        701   73        10        20         40        552   61        0         15         30        45df2:df2 = pd.DataFrame(columns=['gender', 'value_1', 'value_2', 'value_3'], data = [[2, 3, 5, 0], [4, 6, 7, 10]])          value_1    value_2    value_3    gender0         2          3          5          01         4          6          7          10我想將 df1 的 value_1、value_2、value_3 列乘以 df2,其中性別列在兩個(gè)數(shù)據(jù)幀中都匹配。我已經(jīng)按照以下方式完成了此操作并且效果很好:val_cols = ['value_1', 'value_2', 'value_3']df1.loc[df1.gender==0, val_cols] *= df2[df2.gender==0][val_cols].values[0].tolist()df1.loc[df1.gender==10, val_cols] *= df2[df2.gender==10][val_cols].values[0].tolist()但這僅適用于性別列只有幾個(gè)值的情況,在這種情況下它只能是 0 和 10。但是如果性別有更多不同的值怎么辦? 如果 df2 中的性別值和相應(yīng)的記錄數(shù)量較高,是否有更好的方法來(lái)做到這一點(diǎn)? PS:我的真實(shí)數(shù)據(jù)幀非常大,因此我無(wú)法使用 apply 或 map 函數(shù)。
查看完整描述

1 回答

?
料青山看我應(yīng)如是

TA貢獻(xiàn)1772條經(jīng)驗(yàn) 獲得超8個(gè)贊

您可以.set_index()在gender兩個(gè)數(shù)據(jù)幀上然后執(zhí)行以下操作df.mul():


df1 = pd.DataFrame(columns=['user_id', 'gender', 'value_1', 'value_2', 'value_3'], data = [[112,0,50,60,70], [73,10,20,40,55],[61, 0, 15, 30, 45]])

df2 = pd.DataFrame(columns=['value_1', 'value_2', 'value_3', 'gender'], data = [[2, 3, 5, 0], [4, 6, 7, 10]])


df1 = df1.set_index(['gender', 'user_id'])

df2 = df2.set_index('gender')


out = df1.mul(df2, level=0)

print(out)

印刷:


                value_1  value_2  value_3

gender user_id                           

0      112          100      180      350

10     73            80      240      385

0      61            30       90      225


查看完整回答
反對(duì) 回復(fù) 2024-01-15
  • 1 回答
  • 0 關(guān)注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)