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

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

在 Python 中使用 Pandas 對過濾數(shù)據(jù)應(yīng)用過濾器

在 Python 中使用 Pandas 對過濾數(shù)據(jù)應(yīng)用過濾器

拉風的咖菲貓 2021-10-12 16:34:41
我有一個熊貓數(shù)據(jù)框,我想以一種我尚未發(fā)現(xiàn)的方式在過濾器之后應(yīng)用過濾器。為了提供更多上下文,A 列是不同 IP 的占位符,而 B 列是公司 ID 的占位符。我希望第一個過濾器查看 IP 出現(xiàn)的次數(shù)。如果 IP 僅出現(xiàn)一次或 IP 出現(xiàn)超過 3 次,則應(yīng)排除這些行。這部分,我設(shè)法解決了。問題是,現(xiàn)在,我希望保留在數(shù)據(jù)庫中的每個 IP 至少可以訪問 2 個不同的公司。代碼發(fā)布在下面,之后會有輸出和預(yù)期輸出。import pandas as pddf = pd.DataFrame({'A': ['001', '001', '002', '003', '003', '003', '003', '004', '004'],                   'B': ['firm_a', 'firm_a', 'firm_b', 'firm_a', 'firm_c', 'firm_d', 'firm_a', 'firm_a', 'firm_b']},                  index=[0, 1, 2, 3, 4, 5, 6, 7, 8])df = df.groupby('A').filter(lambda x: len(x) > 1)df = df.groupby('A').filter(lambda x: len(x) < 4)print(df)電流輸出:     A       B0  001  firm_a1  001  firm_a7  004  firm_a8  004  firm_b現(xiàn)在,我想實現(xiàn)第二個過濾器,檢查一個 IP 是否訪問了至少 2 個不同的公司。在提供的示例中,預(yù)期輸出如下:     A       B7  004  firm_a8  004  firm_b如您所見,IP 001 被刪除,因為它通過了第一個過濾器(訪問了 2 個或更多公司),但它訪問了同一家公司并被淘汰。我不知道如何實現(xiàn)第二部分。我試著環(huán)顧四周,雖然有很多關(guān)于過濾的 Pandas 教程,但我沒有找到適合我的問題的東西。雖然是的,但我可以通過將每個 IP 分開并獲取訪問公司的列表、消除重復(fù)項并查看列表的長度是否大于 1 來在 python 中執(zhí)行此操作,這在計算上非常昂貴。我有接近 10 億行,這樣做會花費太多時間。有什么聰明的方法可以設(shè)置嗎?
查看完整描述

1 回答

?
楊魅力

TA貢獻1811條經(jīng)驗 獲得超6個贊

您可以將groupby+transform與nunique:


res = df[df.groupby('A')['B'].transform('nunique') >= 2]


print(res)


   A       B

7  4  firm_a

8  4  firm_b


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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