请教个问题,我想把数据中名字的重复值删掉,只保留年纪大的怎么整呢?

Python进阶者
• 阅读 458

大家好,我是皮皮。

一、前言

国庆期间在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()函数的具体参数

  • 用法: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=0
ascending 是否按指定列的数组升序排列,默认为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)

多条件根据排序删除重复值

mport 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】、【此类生物】、【凡人不烦人】等人参与学习交流。

点赞
收藏
评论区
推荐文章
Python进阶者 Python进阶者
2年前
根据uid进行分组后,然后组内,按照mon进行升序,怎么写语句呢?
大家好,我是皮皮。一、前言前几天在Python白银交流群【空翼】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789773
Python进阶者 Python进阶者
2年前
麻烦问一下算出来后怎么写成一个csv并有标题?
大家好,我是皮皮。一、前言前几天在Python铂金交流群【红色基因代代传】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/2623978
Python进阶者 Python进阶者
2年前
我把一个json格式的数据读到dataframe里面了 怎么解析出自己需要的字段呢?
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【WYM】问了一个pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789
Python进阶者 Python进阶者
2年前
请问下图的groupby怎么形成键:值字典形式呢?
大家好,我是皮皮。一、前言前几天在Python钻石交流群【静惜】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/2623978936e
Python进阶者 Python进阶者
2年前
大佬们,这种嵌套字典类型的数据,我想把它读取到df里,如何操作?
大家好,我是皮皮。一、前言前几天在Python最强王者交流群【WYM】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789
Python进阶者 Python进阶者
2年前
这有7天的数据,如何快速把七天的数据分开成7个文件,每个文件只包含一天的数据?
大家好,我是皮皮。一、前言国庆期间在Python白银交流群【像风自由】问了一个自动化办公处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789d
Python进阶者 Python进阶者
2年前
在dataframe中怎么去除这种不合规的时间啊?
大家好,我是皮皮。一、前言国庆期间在Python钻石交流群【静惜】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789d2
Python进阶者 Python进阶者
2年前
有没有一行代码,把数字字符,转成数字的?
大家好,我是皮皮。一、前言国庆期间在Python白银交流群【像风自由】问了一个Pandas处理的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789
Python进阶者 Python进阶者
2年前
盘点一个pandas两个数据横向拼接的问题
大家好,我是皮皮。一、前言前几天在Python白银交流群【谢峰】问了一个Pandas拼接的问题,提问截图如下:!(https://uploadimages.jianshu.io/upload_images/26239789c53
Python进阶者 Python进阶者
10个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这