亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

Pandas groupby 然后刪除低于指定大小的組

Pandas groupby 然后刪除低于指定大小的組

森林海 2021-11-02 15:03:25
我正在嘗試將 DataFrame 分成組并將組刪除到最小大?。ㄐ‘惓V担┮韵?。這是我嘗試過的:df.groupby(['A']).filter(lambda x: x.count() > min_size)df.groupby(['A']).filter(lambda x: x.size() > min_size)df.groupby(['A']).filter(lambda x: x['A'].count() > min_size)df.groupby(['A']).filter(lambda x: x['A'].size() > min_size)但是這些要么拋出異常,要么返回與我預期不同的表。我只想過濾,而不是計算新表。
查看完整描述

3 回答

?
拉丁的傳說

TA貢獻1789條經驗 獲得超8個贊

您可以使用len:


In [11]: df = pd.DataFrame([[1, 2], [1, 4], [5, 6]], columns=['A', 'B'])


In [12]: df.groupby('A').filter(lambda x: len(x) > 1)

Out[12]:

   A  B

0  1  2

1  1  4


查看完整回答
反對 回復 2021-11-02
?
慕哥6287543

TA貢獻1831條經驗 獲得超10個贊

行數在屬性中.shape[0]

df.groupby('A').filter(lambda x: x.shape[0] >= min_size)

注意:如果要刪除小于最小尺寸的組,請保留大于或處于最小尺寸(>=,不是>)的組。


查看完整回答
反對 回復 2021-11-02
?
qq_笑_17

TA貢獻1818條經驗 獲得超7個贊

groupby.filter對于較大的數據集/大量組,可能會非常慢。更快的方法是使用groupby.transform:


下面是一個例子,首先創建數據集:


import pandas as pd

import numpy as np


df = pd.concat([

    pd.DataFrame({'y': np.random.randn(np.random.randint(1,5))}).assign(A=str(i)) 

    for i in range(1,1000)

]).reset_index(drop=True)

print(df)

             y    A

0     1.375980    1

1    -0.023861    1

2    -0.474707    1

3    -0.151859    2

4    -1.696823    2

...        ...  ...

2424  0.276737  998

2425 -0.142171  999

2426 -0.718891  999

2427 -0.621315  999

2428  1.335450  999


[2429 rows x 2 columns]

計時:

http://img1.sycdn.imooc.com//6180e2e50001e0ad10790242.jpg

查看完整回答
反對 回復 2021-11-02
  • 3 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號