一道Pandas题:3种解法
theme: smartblue
公众号:尤而小屋
作者:Peter
编辑:Peter
大家好,我是Peter~
今天给大家分享一个粉丝朋友问的一道关于Pandas题。看上去题目需求简单,实际上自己体会!
需求(基础版本)
有下面的这样一个DataFrame(数据是模拟的),找出每个数值第一次出现的索引号:
- 2第一次出现索引为0
- 3第一次出现索引为4
- 7第一次出现索引为6
这就是最终要展现的结果,如何解决?下面提供不同的解决思路
方法1-移位函数shift
shift函数是在指定的轴方向上进行移动指定的长度:
1、先向下移动一个单位,得到df2
2、为了后面的处理,df2进行属性字段的重命名:
python
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函数的结果
思考题
什么情况下会用到移位或者差分函数?
「其他文章」
- 基于机器学习分类算法的钢材缺陷检测分类
- JSON数据,Python搞定!
- 逻辑回归:信贷违规预测!
- kaggle实战-肿瘤数据统计分析
- Pandas操作mysql数据库!
- 数学公式编辑神器-Mathpix Snipping Tool
- 精选20个Pandas统计函数
- 露一手,利用Python分析房价
- 德国信贷数据建模baseline!
- Python函数传参机制详解
- Python爬虫周游全国-兰州站
- 一道Pandas题:3种解法
- 机器学习实战:基于3大分类模型的中风病人预测
- 利用seaborn绘制柱状图
- 机器学习实战:基于MNIST数据集的二分类问题
- 基于深度学习Keras的深圳租房建模
- 机器学习高频使用代码片段
- Python入门:Python变量和赋值
- 深度学习框架Keras入门保姆教程
- kaggle实战:极度不均衡的信用卡数据分析