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

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

根據(jù)值計數(shù)列刪除已排序的行

根據(jù)值計數(shù)列刪除已排序的行

呼喚遠方 2022-07-12 18:26:54
我的數(shù)據(jù)框如下所示:   year   id    0  2019   x11  2012   x12  2017   x13  2013   x14  2018   x25  2012   x26  2013   x2我想過濾我的整個數(shù)據(jù)框,這樣如果每個 id 有超過 3 個觀察值,則應(yīng)該刪除最低年份的觀察值。在這種情況下,應(yīng)刪除第 1 行。   year   id    0  2019   x11  2017   x12  2013   x13  2018   x24  2012   x25  2013   x2
查看完整描述

3 回答

?
吃雞游戲

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

DataFrame.sort_values與 一起使用GroupBy.head:


df = df.sort_values(['id','year'], ascending=[True, False]).groupby('id').head(3)

print (df)

   year  id

0  2019  x1

2  2017  x1

3  2013  x1

4  2018  x2

6  2013  x2

5  2012  x2

如果順序應(yīng)該相同,請?zhí)砑覦ataFrame.sort_index:


df = df.sort_values(['id','year'], ascending=[True, False]).groupby('id').head(3).sort_index()

print (df)

   year  id

0  2019  x1

2  2017  x1

3  2013  x1

4  2018  x2

5  2012  x2

6  2013  x2


查看完整回答
反對 回復(fù) 2022-07-12
?
慕仙森

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

使用GroupBy.nlargest:


df = df.groupby('id')['year'].nlargest(3).reset_index().drop(columns='level_1')


   id  year

0  x1  2019

1  x1  2017

2  x1  2013

3  x2  2018

4  x2  2013

5  x2  2012

確保它year有一個intdtype:


df['year'] = df['year'].astype(int)


查看完整回答
反對 回復(fù) 2022-07-12
?
茅侃侃

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

使用 for 循環(huán)來解決這個問題怎么樣(我喜歡循環(huán)):


id_unique = df.id.unique()


df_new = pd.DataFrame(columns = df.columns)


for i in id_unique:

    df_new = pd.concat([df_new, df[df['id'] == i ].sort_values(['year'], ascending= [False]).head(3)], axis=0)


查看完整回答
反對 回復(fù) 2022-07-12
  • 3 回答
  • 0 關(guān)注
  • 95 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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