日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

DataFrame 数据筛选

發(fā)布時(shí)間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DataFrame 数据筛选 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

pandas DataFrame 數(shù)據(jù)篩選

  • DataFrame 數(shù)據(jù)篩選
    • 數(shù)據(jù)篩選基本格式
      • contains
      • isin
      • 多個(gè)條件與或
    • 數(shù)據(jù)篩選進(jìn)階
      • groupby
      • agg
      • np.where

DataFrame 數(shù)據(jù)篩選

近期使用pandas比較頻繁,在進(jìn)行數(shù)據(jù)處理的時(shí)候經(jīng)常要用到dataframe的數(shù)據(jù)篩選功能,這里做個(gè)小結(jié)。

數(shù)據(jù)有以下的格式:

columns = [“blockNumber”,“timestamp”,“transactionHash”,“from”,“to”,“creates”,……“isError”]

數(shù)據(jù)篩選基本格式

初級(jí)篩選:

==, !=, >, >=, <, <=

主要用于簡(jiǎn)單的判斷

contains

選取"from"列數(shù)據(jù),最后一位為0或a的數(shù)據(jù)。(數(shù)據(jù)類(lèi)型默認(rèn)str)

data[data['from'].str[-1:].str.contains('0|a')]

contains語(yǔ)句中,可以以’|'符號(hào)為分割,添加多個(gè)候選項(xiàng)。

這里由于要只選最后一位,需要使用兩次 str 方法。

isin

已有一個(gè)取值數(shù)組,目標(biāo)是選擇數(shù)據(jù)中,"from"數(shù)據(jù)的值在取值數(shù)組內(nèi)的數(shù)據(jù)

targetList = ['0x12','0x1a','0x98', ... , '0x82'] data[data['from'].isin(targetList)]

這里targetList最好保持list的數(shù)據(jù)類(lèi)型,使用pandas.Series可能會(huì)有意外的錯(cuò)誤

反過(guò)來(lái),如果目標(biāo)是選擇數(shù)據(jù)中,"from"數(shù)據(jù)的值不在取值數(shù)組內(nèi)的數(shù)據(jù)

targetList = ['0x12','0x1a','0x98', ... , '0x82'] data[`data['from'].isin(targetList)]

仔細(xì)注意,這里是在前面加個(gè)反引號(hào) ` ,通過(guò)反引號(hào)來(lái)表示取反

多個(gè)條件與或

選取的是數(shù)據(jù)中,"from"列數(shù)據(jù)的取值在目標(biāo)數(shù)組內(nèi),或者"to"列數(shù)據(jù)取值最后一位為0或a的數(shù)據(jù)

targetList = ['0x12','0x1a','0x98', ... , '0x82'] data[(data['from'].isin(targetList)) | (data['to'].str[-1:].str.contains('0|a'))]

選取的是數(shù)據(jù)中,"from"列數(shù)據(jù)的取值在目標(biāo)數(shù)組內(nèi),并且"to"列數(shù)據(jù)最后一位為0或a的數(shù)據(jù)

targetList = ['0x12','0x1a','0x98', ... , '0x82'] data[(data['from'].isin(targetList)) & (data['to'].str[-1:].str.contains('0|a'))]

如果是多個(gè)條件并列在一起,每個(gè)條件都需要用括號(hào)括起來(lái)。

數(shù)據(jù)篩選進(jìn)階

這里主要介紹一些,跟數(shù)據(jù)庫(kù)操作相似的數(shù)據(jù)篩選,假設(shè)數(shù)據(jù)格式如下:

columns = ['from', 'to', 'weight'] # from,to 都是 str數(shù)據(jù),weight是 int 數(shù)據(jù)

groupby

這里,假設(shè)一個(gè)需求是,統(tǒng)計(jì)from中的值,出現(xiàn)的次數(shù),我們很容易想到可以通過(guò)value_counts() 方法直接獲取:

pd.DataFrame(data['from'].value_counts())

這里value_counts()得到的是一個(gè)pandas.Series
那么更進(jìn)一步,如果想知道"from"中的每個(gè)取值,對(duì)應(yīng)的"to"取值跟"weight"取值分別是多少,可以使用:

pd.DataFrame(data.groupby('from'))

agg

如果要統(tǒng)計(jì)的是 from 中的值,每個(gè)值對(duì)應(yīng)的weight總和是多少,這時(shí)候需要使用到groupby跟agg

pd.DataFrame(data.groupby('from').agg('sum'))

np.where

假設(shè)現(xiàn)在的需求是,將from跟to的數(shù)據(jù),每一行按照 from > to 的順序交換(注意不是整列交換)。這時(shí)可以使用np.where實(shí)現(xiàn)。

data['from'], data['to']= np.where(data['from'] > data['to'], [data['to'], data['from']], [data['from'], data['to']])

np.where使用格式是:

np.where(condition, Yes, No)

condition 為T(mén)rue時(shí),取值為Yes,為False時(shí),取值是No

總結(jié)

以上是生活随笔為你收集整理的DataFrame 数据筛选的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。