大家好,我是皮皮。
一、前言國慶期間在Python白銀交流群【謝峰】問了一個Pandas處理的問題,提問截圖如下:
代碼如下:
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)
這裡【甯同學】給了一個思路,先排個序,再删,并且給出了如下代碼:
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)
順利地解決了粉絲的問題。下面是他自己整理出來的,也一起分享給大家了。和上面的代碼沒太大區别,隻是省去了參數名,硬要說就是默認參數省了和沒省的區别。
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()函數的具體參數
參數說明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每日頭條,我们将持续为您更新最新资讯!