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

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

用矢量化函數(shù)替換慢速 Pandas 循環(huán)

用矢量化函數(shù)替換慢速 Pandas 循環(huán)

蠱毒傳說(shuō) 2023-10-26 15:27:13
我在 pandas 中有一個(gè)循環(huán),速度非常慢(十多分鐘)。我試圖用矢量化函數(shù)替換它,但不知道該使用什么。有多個(gè)記錄具有不同的家庭號(hào)碼但具有相同的關(guān)系組號(hào)碼,如果記錄的家庭號(hào)碼與關(guān)系組號(hào)碼相同,那么我想將該記錄的官員號(hào)碼和姓名用于具有該關(guān)系組的所有記錄號(hào)碼(包括家庭號(hào)碼不同的情況)。參見(jiàn)下面的代碼:        rg['RG Officer Number'] = pd.np.nan        rg['RG Officer Name'] = pd.np.nan        for index, row in rg.iterrows():            if row['Relationship Group'] == row['Household Number']:                mask = rg['Relationship Group'] == row['Relationship Group']                rg.loc[mask, 'RG Officer Number'] = row['Household Primary Officer Number']                rg.loc[mask, 'RG Officer Name'] = row['Household Primary Officer Name'] 我嘗試了以下操作,但出現(xiàn)錯(cuò)誤(無(wú)法使用單個(gè) bool 來(lái)索引 setitem)。我想我完全偏離了軌道。也許這對(duì)于向量化函數(shù)來(lái)說(shuō)是不可能的,但似乎不應(yīng)該如此。        mask = row['Relationship Group'] == row['Household Number']        rg.loc[mask, 'RG Officer Number'] = rg.loc['Household Primary Officer Number']您提供的任何幫助將不勝感激。
查看完整描述

1 回答

?
白豬掌柜的

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

過(guò)濾和合并就可以了。


df = pd.DataFrame({'Household Number':[str(i) for i in range(10)],

                   'Relationship Number':[str(i) for i in range(5)]*2,

                   'RG Officer Number':np.random.randint(1,100,10),

                   'RG Officer Name':['name'+str(i) for i in np.random.randint(1,100,10)]})


df

#  Household Number Relationship Number  RG Officer Number RG Officer Name

#0                0                   0                 28          name87

#1                1                   1                 18          name71

#2                2                   2                 69           name8

#3                3                   3                 83          name64

#4                4                   4                 88          name36

#5                5                   0                 25          name89

#6                6                   1                 51          name76

#7                7                   2                 29          name80

#8                8                   3                 61          name27

#9                9                   4                  2          name95



df_filtered = df.loc[df['Household Number'] == df['Relationship Number']]

df_filtered

#  Household Number Relationship Number  RG Officer Number RG Officer Name

#0                0                   0                 28          name87

#1                1                   1                 18          name71

#2                2                   2                 69           name8

#3                3                   3                 83          name64

#4                4                   4                 88          name36


df_merged = pd.merge(left=df,right=df_filtered[['Relationship Number','RG Officer Number','RG Officer Name']],

                     how='left',

                     on='Relationship Number',suffixes=('_old','_new'))

這是合并的數(shù)據(jù)。

https://img1.sycdn.imooc.com/653a15580001d01111440453.jpg

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

添加回答

舉報(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)