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

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

循環(huán)遍歷數(shù)據(jù)框列后如何附加列表?

循環(huán)遍歷數(shù)據(jù)框列后如何附加列表?

偶然的你 2021-12-21 16:32:54
假設(shè)我有一個(gè)如下的數(shù)據(jù)框:df = pd.DataFrame({ 'ids' : ['1', '1', '1', '1', '2', '2', '2', '3', '3'],        'values' : ['5', '8', '7', '12', '2', '1', '3', '15', '4']        }, dtype='int32')ids values1   51   71   81   122   12   32   23   43   15我想要做的是遍歷values列并檢查哪些值大于 6,并且ids必須將列中的相應(yīng) id附加到空列表中。即使一個(gè) id(比如 3)有多個(gè)值,并且在這些多個(gè)值(4 和 15)中,只有一個(gè)值大于 6,我希望將相應(yīng)的 id 附加到列表中。示例: 假設(shè)我們對上述數(shù)據(jù)幀 df 運(yùn)行一個(gè)循環(huán),我希望輸出如下:more = [1, 3]less = [2]以more =[]和less = []為預(yù)初始化空列表到目前為止我所擁有的: 我嘗試實(shí)施相同的方法,但我肯定犯了一些錯(cuò)誤。我有的代碼:less = []more = []for value in df['values']:    for id in df['ids']:        if (value > 6):            more.append(id)        else:            less.append(id)
查看完整描述

2 回答

?
四季花海

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

使用groupby布爾索引來創(chuàng)建您的列表。這將比循環(huán)快得多:


g = df.groupby('ids')['values'].max()

mask = g.gt(6)

more = g[mask].index.tolist()

less = g[~mask].index.tolist()


print(more)

print(less)


[1, 3]

[2]


查看完整回答
反對 回復(fù) 2021-12-21
?
元芳怎么了

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

您可以使用數(shù)據(jù)幀索引來刪除所有大于 6 的索引并使用以下方法創(chuàng)建一組唯一索引:

setA = set(df[df['values'] > 6]['ids'])

這將在數(shù)據(jù)框中創(chuàng)建一組所有索引:

setB = set(df['ids'])

現(xiàn)在,

more = list(setA)

對于less,取集差:

less = list(setB.difference(setA))

而已!


查看完整回答
反對 回復(fù) 2021-12-21
  • 2 回答
  • 0 關(guān)注
  • 171 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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