概述
公众号:尤而小屋
作者:Peter
编辑:Peter
今天给大家分享一个粉丝朋友问的一道关于Pandas题,提供多种解决思路!

需求(基础版本)
有下面的这样一个DataFrame(数据是模拟的),找出每个数值第一次出现的索引号:
2第一次出现索引为0
3第一次出现索引为4
7第一次出现索引为6
这就是最终要展现的结果,如何解决?下面提供不同的解决思路

方法1-移位函数shift
shift函数是在指定的轴方向上进行移动指定的长度:
1、先向下移动一个单位,得到df2

2、为了后面的处理,df2进行属性字段的重命名:
df2.rename(columns={"col1":"col2"},inplace=True)
3、将df1和df2进行合并

4、筛选col1和col2不等的情况即可

方法2-差分函数diff
完整的一行代码如下:

下面我们拆解下这行代码:
1、差分函数diff
每个数据和前一个数值相减;如果两个值相等,差值为0

2、判断和0的关系

3、锁定为True的值即可

方法3:直接去重
一个很巧妙的方法:直接去重,保留第一条数据;但这仅仅是特例

需求(升级版)
需求还是类似,找出每个数值第一次出现的索引;但是数据会重复隔断出现。
下面已经标记了正确的结果:

方法1-shift函数
还是可以解决


结果:

方法2-差分函数diff
同样可以解决:

但是去重函数在这种情况就不行:drop_duplicates函数是对整体数据的去重,只保留一条数据

延伸知识点
在这里重点理解下移位函数shift和差分函数diff的关系,模拟一份数据:

diff函数


shift函数


二者关系
以默认移动一个单位为例



结论:在相同的条件下,原数据框 减掉 shift函数生成的数据就是diff函数的结果

思考题
什么情况下会用到移位或者差分函数?
往期精彩回顾
适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑机器学习交流qq群955171419,加入微信群请扫码
最后
以上就是愤怒书本为你收集整理的【Python】粉丝的Pandas题:一题三解的全部内容,希望文章能够帮你解决【Python】粉丝的Pandas题:一题三解所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复