一道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實戰:極度不均衡的信用卡數據分析