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

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

在兩個(gè)不同列上具有兩個(gè)條件的數(shù)據(jù)框

在兩個(gè)不同列上具有兩個(gè)條件的數(shù)據(jù)框

慕碼人8056858 2023-03-01 15:59:58
我想根據(jù)兩個(gè)不同列上的兩個(gè)條件過濾數(shù)據(jù)框。在下面的示例中,我想過濾數(shù)據(jù)框df以包含行,以便它包含uids,列的值計(jì)數(shù)val大于 4 大于 2。df = pd.DataFrame({'uid':[1,1,1,2,2,3,3,4,4,4],'iid':[11,12,13,12,13,13,14,14,11,12], 'val':[3,4,5,3,5,4,5,4,3,4]})對于這個(gè)數(shù)據(jù)框,我的輸出應(yīng)該是 df   uid  iid  val0    1   11    31    1   12    42    1   13    55    3   13    46    3   14    57    4   14    48    4   11    39    4   12    4在這里,我過濾掉了uid2 的行數(shù),因?yàn)閡id == 2行數(shù)val >= 4小于 2。我只想保留值大于 4 的行數(shù)大于或等于 2。uidval
查看完整描述

1 回答

?
翻閱古今

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

您需要groupby.transform一次sum檢查 val 大于或等于ge4 的位置。并檢查結(jié)果是否將ge其用作 df 上的布爾過濾器。


print (df[df['val'].ge(4).groupby(df['uid']).transform(sum).ge(2)])

   uid  iid  val

0    1   11    3

1    1   12    4

2    1   13    5

5    3   13    4

6    3   14    5

7    4   14    4

8    4   11    3

9    4   12    4

編輯:另一種避免方法groupby.transform是對val小于 4 的行和 uidloc列,在其上使用并在2 處獲取 True。然后返回 uid 列以在 df 上創(chuàng)建布爾過濾器。結(jié)果相同,而且可能更快。gevalue_countsgemap


df[df['uid'].map(df.loc[df['val'].ge(4), 'uid'].value_counts().ge(2))]


查看完整回答
反對 回復(fù) 2023-03-01
  • 1 回答
  • 0 關(guān)注
  • 100 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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