tft每日頭條

 > 科技

 > 删除重複值隻保留一個并求和

删除重複值隻保留一個并求和

科技 更新时间:2024-07-05 21:02:38

大家好,我是皮皮。

一、前言

國慶期間在Python白銀交流群【謝峰】問了一個Pandas處理的問題,提問截圖如下:

删除重複值隻保留一個并求和(我想把數據中名字的重複值删掉)1

代碼如下:

import pandas as pd data = [{'name': '小明', 'age': 18}, {'name': '小張', 'age': 20}, {'name': '小明', 'age': 20}, {'name': '小明', 'age': 38}] data = pd.DataFrame(data) # print(data) # 删除名字重複的,隻保留年齡最大的那個 data = data.drop_duplicates('name', inplace=False) print(data)

二、實現過程

這裡【甯同學】給了一個思路,先排個序,再删,并且給出了如下代碼:

删除重複值隻保留一個并求和(我想把數據中名字的重複值删掉)2

import pandas as pd data = [{'name': '小明', 'age': 18}, {'name': '小張', 'age': 20}, {'name': '小明', 'age': 20}, {'name': '小明', 'age': 38}] data = pd.DataFrame(data) # print(data) # 删除名字重複的,隻保留年齡最大的那個 data = data.sort_values(by="age", ascending=False).drop_duplicates('name', inplace=False) # data = data.drop_duplicates('name', inplace=False) print(data)

順利地解決了粉絲的問題。下面是他自己整理出來的,也一起分享給大家了。和上面的代碼沒太大區别,隻是省去了參數名,硬要說就是默認參數省了和沒省的區别。

删除重複值隻保留一個并求和(我想把數據中名字的重複值删掉)3

import pandas as pd data = [{'name': '小明', 'age': 18}, {'name': '小張', 'age': 20}, {'name': '小明', 'age': 20}, {'name': '小明', 'age': 38}] data = pd.DataFrame(data) # print(data) # 删除名字重複的,隻保留年齡最大的那個 data = data.sort_values('age', ascending=False).drop_duplicates(subset=['name'], keep='first') print(data) data = data.sort_values(by='age', ascending=False).drop_duplicates('name', inplace=False) print(data)

後來粉絲自己還拓展了下,這裡拿出來跟大家一起分享。

一、sort_values()函數用途

pandas中的sort_values()函數原理類似于SQL中的order by,可以将數據集依照某個字段中的數據進行排序,該函數即可根據指定列數據也可根據指定行的數據排序。

二、sort_values()函數的具體參數

  • 用法:DataFrame.sort_values(by=‘##’,axis=0,ascending=True, inplace=False, na_position=‘last’)
  • 參數說明

參數說明by指定列名(axis=0或’index’)或索引值(axis=1或’columns’)axis若axis=0或’index’,則按照指定列中數據大小排序;若axis=1或’columns’,則按照指定索引中數據大小排序,默認axis=0ascending是否按指定列的數組升序排列,默認為True,即升序排列inplace是否用排序後的數據集替換原來的數據,默認為False,即不替換na_position{‘first’,‘last’},設定缺失值的顯示位置

三、例子

單條件根據排序删除重複值

import pandas as pd data = [{'name': '小明', 'age': 18, 'high': 155}, {'name': '小張', 'age': 20, 'high': 145}, {'name': '小明', 'age': 38, 'high': 175}, {'name': '小明', 'age': 38, 'high': 195}] data = pd.DataFrame(data) # 單條件删除(名字重複的,隻保留年齡最大的那個) a = data.sort_values('age', ascending=False).drop_duplicates('name') print(a)

多條件根據排序删除重複值

import pandas as pd data = [{'name': '小明', 'age': 18, 'high': 155}, {'name': '小張', 'age': 20, 'high': 145}, {'name': '小明', 'age': 38, 'high': 175}, {'name': '小明', 'age': 38, 'high': 195}] data = pd.DataFrame(data) # 多條件删除(名字一樣,根據年齡删除,保留最大的,年齡一樣,再根據身高删除,保留最大的) b = data.sort_values(['age', 'high'], ascending=False).drop_duplicates('name') print(b)

可以說學完這裡,sort_values()的用法算是基本上吃透了。

三、總結

大家好,我是皮皮。這篇文章主要盤點了一個Pandas處理的問題,文中針對該問題,給出了具體的解析和代碼實現,幫助粉絲順利解決了問題。

最後感謝粉絲【謝峰】提問,感謝【甯同學】、【論草莓如何成為凍幹莓】給出的思路和代碼解析,感謝【dcpeng】、【此類生物】、【凡人不煩人】等人參與學習交流。

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved