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

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

加速 Pandas:查找滿足一組條件的所有列

加速 Pandas:查找滿足一組條件的所有列

侃侃爾雅 2022-01-05 20:37:56
我有使用 Pandas DataFrame 表示的數(shù)據(jù),例如如下所示:| id | entity | name | value | location其中id是一個(gè)integer值、entity是一個(gè)integer、name是一個(gè)string、value是一個(gè)integer、和location是一個(gè)string(例如美國(guó)、加拿大、英國(guó)等)?,F(xiàn)在,我想向此數(shù)據(jù)框中添加一個(gè)新列,即列“ flag”,其中的值分配如下:for d in df.iterrows():    if d.entity == 10 and d.value != 1000 and d.location == CA:        d.flag = "A"     elif d.entity != 10 and d.entity != 0 and d.value == 1000 and d.location == US:        d.flag = "C"    elif d.entity == 0 and d.value == 1000 and d.location == US"        d.flag = "B"    else:        print("Different case")有沒有辦法加快速度并使用一些內(nèi)置函數(shù)而不是 for 循環(huán)?
查看完整描述

3 回答

?
郎朗坤

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

np.select根據(jù)您給它選擇的那些條件,使用您傳遞條件列表的哪個(gè),并且您可以在不滿足任何條件時(shí)指定默認(rèn)值。


conditions = [

    (d.entity == 10) & (d.value != 1000) & (d.location == 'CA'),

    (d.entity != 10) & (d.entity != 0) & (d.value == 1000) & (d.location == 'US'),

    (d.entity == 0) & (d.value == 1000) & (d.location == 'US')

]


choices = ["A", "C", "B"]


df['flag'] = np.select(conditions, choices, default="Different case")


查看完整回答
反對(duì) 回復(fù) 2022-01-05
?
LEATH

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

添加()按位and->&用于處理numpy.select:


m = [

    (d.entity == 10) & (d.value != 1000) & (d.location == 'CA'),

    (d.entity != 10) & (d.entity != 0) & (d.value == 1000) & (d.location == 'US'),

    (d.entity == 0) & (d.value == 1000) & (d.location == 'US')

]


df['flag'] = np.select(m, ["A", "C", "B"], default="Different case")


查看完整回答
反對(duì) 回復(fù) 2022-01-05
?
絕地?zé)o雙

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

您寫了“查找滿足一組條件的所有列”,但您的代碼顯示您實(shí)際上是在嘗試添加一個(gè)新列,其每行的值是根據(jù)同一行的其他列的值計(jì)算的。


如果確實(shí)如此,您可以使用df.apply,給它一個(gè)計(jì)算特定行值的函數(shù):


def flag_value(row):

    if row.entity == 10 and row.value != 1000 and row.location == CA:

        return "A"

    elif row.entity != 10 and row.entity != 0 and row.value == 1000 and row.location == US:

        return "C"

    elif row.entity == 0 and row.value == 1000 and row.location == US:

        return "B"

    else:

        return "Different case"


df['flag'] = df.apply(flag_value, axis=1)

查看此相關(guān)問題以獲取更多信息。


如果您真的想查找指定某些條件的所有列,使用Pandas 數(shù)據(jù)框執(zhí)行此操作的常用方法是使用df.loc和索引:


only_a_cases = df.loc[df.entity == 10 & df.value != 1000 & df.location == "CA"]

# or:

only_a_cases = df.loc[lambda df: df.entity == 10 & df.value != 1000 & df.location == "CA"]


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

添加回答

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