法1 迴圈比較
for x in df['id']:
if x == 1:
print('exsit')
break
耗時:2.8s
如果不僅僅想確認存在,還想返回下標。
多用乙個enumerate,或者用range進行迴圈即可。
法2 掩碼運算
不僅能確認存在,存在時還能獲得index。
q=mydf[mydf['id'] == 1].index.tolist()
if len(q)==0:
print('not exsit')
耗時:0.16s
法3 set空間換時間
僅能確認「存在」,無法返回下標。
優點是速度很快。
#轉為set
ss = set(df['id'])
if 1 in ss:
print('exist')
耗時:0.01s
可見迴圈最慢,set最快,使用掩碼運算次之。
先介紹isin()函式,它可以達到與掩碼運算相似的效果。
傳入的引數必須是乙個序列,比如list,如果值存在於這個序列中,返回true,否則false。
q=mydf[mydf['id'].isin([1])].index.tolist()
if len(q)==0:
print('not exsit')
法1 用set構建正樣本集合
#用乙個臨時容器儲存需要的值
temp = set(df['id'])
#假設我們想從id這列去掉1和2
temp.remove('1')
temp.remove('2')
#再用isin()調整即可
df = df[df['id'].isin(temp)]
耗時1.06s
法2 直接原地取反
通過取反,來表示不需要這兩個數
df=df[~df1['a'].isin([1,2])]
耗時0.16s
顯然法2簡單優美高效。
dataframe刪除某列
bodytype為待刪列的列名 data.drop columns bodytype axis 1 但是要注意的是,data.drop 會將刪除列後的dataframe返回,data本身是不會有變化的!因此可以寫成 bodytype為待刪列的列名 dataafter data.drop column...
pandas根據某列去重
drop duplicates subset comment keep first inplace true 引數 栗子 首先建立乙個dataframe。使用drop duplicates來去除重複值,如果不指明subset,那麼預設根據所有列來考慮,即當某兩行資料所有列都重複時進行去重。subse...
pandas 資料索引與選取
我們對 dataframe 進行選擇,大抵從這三個層次考慮 行列 區域 單元格。其對應使用的方法如下 一.行,列 df 二.區域 df.loc,df.iloc,df.ix 三.單元格 df.at,df.iat 下面開始練習 import numpy as np import pandas as pd...