真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

pandas子集選取的三種方法:[]、.loc[]、.iloc[]

pandas讀取Excel、csv文件中的數(shù)據(jù)時,得到的大多是表格型的二維數(shù)據(jù),在pandas中對應(yīng)的即為DataFrame數(shù)據(jù)結(jié)構(gòu)。在處理這類數(shù)據(jù)時,往往要根據(jù)據(jù)需求先獲取數(shù)據(jù)中的子集,如某些列、某些行、行列交叉的部分等。可以說子集選取是一個非?;A(chǔ)、頻繁使用的操作,而DataFrame的子集選取看似簡單卻有一定復(fù)雜性。本文聚焦DataFrame的子集選取操作邏輯,力求在實戰(zhàn)中遇到子集選取操作的需求時"不迷路"。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都做網(wǎng)站、成都網(wǎng)站設(shè)計、成都外貿(mào)網(wǎng)站建設(shè)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的東鄉(xiāng)族網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

主目錄

一、圖解DataFrame

DataFrame是一種二維的表格型數(shù)據(jù)結(jié)構(gòu),每一行/列都有對應(yīng)的標(biāo)簽位置序號。行列標(biāo)簽、位置序號的對應(yīng)關(guān)系如下圖所示:

圖解DataFrame行列標(biāo)簽、位置序號
  • 列標(biāo)簽(也叫列名:columns)
  • 行標(biāo)簽(也叫行索引:index)默認(rèn)為(0, 1, 2, …, n)。這里與位置序號恰好一致。

針對DataFrame的數(shù)據(jù)結(jié)構(gòu),pandas提供了三種獲取子集的索引器:[]、.loc[].iloc[]。

  • df[]:快捷的整行整列選取

  • df.loc[]:按標(biāo)簽的行列交叉選取

  • df.iloc[]:按位置序號的行列交叉選取

二、整行整列選?。?code>df[]

df['列標(biāo)簽'],選取單個整列

#選取“日期”列
df['日期']

df[標(biāo)簽列表],選取多個整列

#選取“最高溫”,“最低溫”,“風(fēng)力風(fēng)向”三列
df[['最高溫','最低溫','風(fēng)力風(fēng)向']]

df[切片],選取整行

#選取行索引值1、2、3的整行。切片左閉右開
df[1:4]

切片語法也支持字符串的索引標(biāo)簽值,如將"日期"列修改為行索引(index)

df1=df.set_index("日期")
#下面兩個切片選取的行是一樣的
df1[1:4]#按位置序號的切片,左閉右開
df1['2021-12-02周四':'2021-12-04周六']#按行標(biāo)簽的切片,左閉右閉

df[]語法小結(jié):

  • df[]語法中,方括號內(nèi)輸入標(biāo)簽名列表選取的是列;而方括號內(nèi)輸入切片、條件選取的是行(條件篩選在下文單獨介紹)。
  • df[]輸入切片選取整行時,如果是按照位置序號的切片,左閉右開;按行標(biāo)簽的切片,左閉右閉。

三、行列交叉選取

行列交叉選擇,可以通過df.loc[]df.iloc[]兩個索引器來實現(xiàn),兩者都需要輸入兩組參數(shù),先行選擇,后列選擇。行、列選擇都可以是單個標(biāo)簽(序號)、列表和切片。根據(jù)需求組合使用,威力強(qiáng)大!

df.loc[行選擇,列選擇]。參數(shù)面向的是標(biāo)簽。

df.iloc[行位置序號,列位置序號]。參數(shù)面向的是位置序號

  • :單個數(shù)值,:單個數(shù)值
df1.loc['2021-12-05周日','空氣質(zhì)量指數(shù)']
df1.iloc[4,4]
image-
  • :列表,:列表
df1.loc[['2021-12-05周日','2021-12-07周二'],['最高溫','最低溫','風(fēng)力風(fēng)向']]
df1.iloc[[4,6],[0,1,3]]
image-
  • :切片,:切片
df1.loc['2021-12-01周三':'2021-12-03周五','天氣':'空氣質(zhì)量指數(shù)']
df1.iloc[:3,2:5]
image-
  • :切片(全選),:列表
df1.loc[:,['最高溫','最低溫']]
df1.iloc[:,[0,1]]
image-

四、按條件篩選子集

df.[]、df.loc[]df.iloc[]除了按照行列的標(biāo)簽和位置序號選取子集,還可以使用條件(布爾表達(dá)式)篩選子集。

篩選最高溫、最低溫

將最高溫、最低溫處理成數(shù)值型:

df1.loc[:,'最高溫']=df1['最高溫'].str.replace('°','').astype('float32')
df1.loc[:,'最低溫']=df1['最低溫'].str.replace('°','').astype('float32')
溫度處理成數(shù)值

獲取最高溫大于10度,最低溫小于6度的數(shù)據(jù)

#df.[]的寫法
df1[(df1['最高溫']>10)&(df1['最低溫']<6)]
#df.loc[]的寫法
df1.loc[(df1['最高溫']>10)&(df1['最低溫']<6),:]
#&與、|或、~非
df1.loc[(df1['最高溫']>10)&~(df1['最低溫']>=6),:]
基于溫度的條件篩選

五、函數(shù)篩選子集

#匿名函數(shù)lambda表達(dá)式,獲取最高溫大于10度,最低溫小于6度的數(shù)據(jù)
df1.loc[lambdadf:(df['最高溫']>10)&(df['最低溫']<6)]

獲取前9天并且空氣質(zhì)量指數(shù)為優(yōu)

#自定義函數(shù),返回值是布爾數(shù)組
defqueryData(df):
returndf.index.str.startswith('2021-12-0')&df['空氣質(zhì)量指數(shù)'].str.endswith('優(yōu)')

df1.loc[queryData,:]
函數(shù)查詢

小結(jié)

在pandast提供的df[]df.loc[]、df.iloc[]這個三種索引器,前兩個更為常用。df[]在整行或者整列獲取時更為方便。整行整列選取可以看作是行列交叉選取的一個特例,故df.loc[]是更為通用的方法,它支持單個標(biāo)簽值、列表多選、切片區(qū)間、條件(布爾)表達(dá)式、函數(shù)調(diào)用五種方式索引子集,功能強(qiáng)大。


當(dāng)前標(biāo)題:pandas子集選取的三種方法:[]、.loc[]、.iloc[]
文章起源:http://weahome.cn/article/dsogpsd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部