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

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

避免多次在 pandas 中編寫相同的 .loc

避免多次在 pandas 中編寫相同的 .loc

GCT1015 2022-10-18 16:09:43
這是一些說明我的問題的代碼import pandas as pdimport numpy as np# Create random dataframedf = pd.DataFrame({'col1': np.random.randint(0, 9, 10),                   'col2': np.random.randint(0, 9, 10),                   'col3': np.random.randint(0, 9, 10)})# Can this be written in a better way?df.loc[df['col1'] > df['col2'], 'col3'] = (df.loc[df['col1'] > df['col2'], 'col2'] +                                           df.loc[df['col1'] > df['col2'], 'col3'])基本上,在某些情況下,我想對具有較長條件的數(shù)據(jù)框進(jìn)行子集化,并用基于其他列的表達(dá)式替換值。這就是我最終寫它的方式,但我認(rèn)為可能有更好的方法來做到這一點
查看完整描述

2 回答

?
慕姐4208626

TA貢獻(xiàn)1852條經(jīng)驗 獲得超7個贊

您可以創(chuàng)建一個mask, 在這個特定的求和操作中,您可以通過以下方式進(jìn)行簡化+=:


mask = df['col1'] > df['col2']

df.loc[mask, 'col3'] += df.loc[mask, 'col2']

如果您想創(chuàng)建一個子集,您可以嘗試以下操作:


mask = df['col1']>df['col2']

tmp_df = df.loc[mask, ['col2', 'col3']]

# here you could do whatever on tmp_df without modifying df like

tmp_df *= 2 # just as example

# them assign the value back to df only for the rows and columns you want

df.loc[mask, 'col3'] = tmp_df.sum(axis=1)

但是你仍然需要mask在loc'col3'中分配值時。等式右邊的操作可能更容易閱讀


查看完整回答
反對 回復(fù) 2022-10-18
?
寶慕林4294392

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

如果您沒有重復(fù)的索引,您可以嘗試:

df.loc[df['col1'] > df['col2'], 'col3'] = df['col2'] +  df['col3']


查看完整回答
反對 回復(fù) 2022-10-18
  • 2 回答
  • 0 關(guān)注
  • 129 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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