pandas 某列查詢 選取與刪除某數

2021-09-22 10:24:27 字數 1121 閱讀 4576

法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...