社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

【Python】粉丝的Pandas题:一题三解

机器学习初学者 • 3 年前 • 361 次点击  

公众号:尤而小屋
作者: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函数的结果

思考题

什么情况下会用到移位或者差分函数?




    
往期精彩回顾




Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/136482
 
361 次点击