欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

python重置索引函數(shù),python dataframe重新索引

index在python中的用法

如下:

創(chuàng)新互聯(lián)建站長期為上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為靖邊企業(yè)提供專業(yè)的網(wǎng)站設(shè)計、成都網(wǎng)站設(shè)計,靖邊網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。

1、index函數(shù):用于從列表中找出某個值第一個匹配項的索引位置。

2、index方法語法:list.index(x[,?start[,?end]])。

3、參數(shù):x-- 查找的對象。start-- 可選,查找的起始位置。end-- 可選,查找的結(jié)束位置。

4、返回值:該方法返回查找對象的索引位置,如果沒有找到對象則拋出異常。

5、實例:

代碼:str1?=?"this?is?string?example....wow!!!";str2?=?"exam"。

index函數(shù)為print(str1.index(str2))。

python中index函數(shù)怎么用?

Python中index方法檢測字符串中是否包含子字符串 str ,如果指定 beg(開始) 和 end(結(jié)束) 范圍,則檢查是否包含在指定范圍內(nèi),該方法與 python find方法一樣,只不過如果str不在string中會報一個異常。

index函數(shù)一般用處是在序列中檢索參數(shù)并返回第一次出現(xiàn)的索引,沒找到就會報錯。

Python 數(shù)據(jù)處理(二十四)—— 索引和選擇

如果你想獲取 'A' 列的第 0 和第 2 個元素,你可以這樣做:

這也可以用 .iloc 獲取,通過使用位置索引來選擇內(nèi)容

可以使用 .get_indexer 獲取多個索引:

警告 :

對于包含一個或多個缺失標簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex

在以前的版本中,只要索引列表中存在至少一個有效標簽,就可以使用 .loc[list-of-labels]

但是現(xiàn)在,只要索引列表中存在缺失的標簽將引發(fā) KeyError 。推薦的替代方法是使用 .reindex() 。

例如

索引列表的標簽都存在

先前的版本

但是,現(xiàn)在

索引標簽列表中包含不存在的標簽,使用 reindex

另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時保留了數(shù)據(jù)的 dtype

對于 .reindex() ,如果有重復(fù)的索引將會引發(fā)異常

通常,您可以將所需的標簽與當前軸做交集,然后重新索引

但是,如果你的索引結(jié)果包含重復(fù)標簽,還是會引發(fā)異常

使用 sample() 方法可以從 Series 或 DataFrame 中隨機選擇行或列。

該方法默認會對行進行采樣,并接受一個特定的行數(shù)、列數(shù),或數(shù)據(jù)子集。

默認情況下, sample 每行最多返回一次,但也可以使用 replace 參數(shù)進行替換采樣

默認情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數(shù)的 weights 參數(shù)設(shè)置抽樣權(quán)值

這些權(quán)重可以是一個列表、一個 NumPy 數(shù)組或一個 Series ,但它們的長度必須與你要抽樣的對象相同。

缺失的值將被視為權(quán)重為零,并且不允許使用 inf 值。如果權(quán)重之和不等于 1 ,則將所有權(quán)重除以權(quán)重之和,將其重新歸一化。例如

當應(yīng)用于 DataFrame 時,您可以通過簡單地將列名作為字符串傳遞給 weights 作為采樣權(quán)重(前提是您要采樣的是行而不是列)。

sample 還允許用戶使用 axis 參數(shù)對列進行抽樣。

最后,我們還可以使用 random_state 參數(shù)為 sample 的隨機數(shù)生成器設(shè)置一個種子,它將接受一個整數(shù)(作為種子)或一個 NumPy RandomState 對象

當為該軸設(shè)置一個不存在的鍵時, .loc/[] 操作可以執(zhí)行放大

在 Series 的情況下,這實際上是一個追加操作

可以通過 .loc 在任一軸上放大 DataFrame

這就像 DataFrame 的 append 操作

由于用 [] 做索引必須處理很多情況(單標簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖

如果你只想訪問一個標量值,最快的方法是使用 at 和 iat 方法,這兩個方法在所有的數(shù)據(jù)結(jié)構(gòu)上都實現(xiàn)了

與 loc 類似, at 提供了基于標簽的標量查找,而 iat 提供了基于整數(shù)的查找,與 iloc 類似

同時,你也可以根據(jù)這些索引進行設(shè)置值

如果索引標簽不存在,會放大數(shù)據(jù)

另一種常見的操作是使用布爾向量來過濾數(shù)據(jù)。運算符包括:

|(or) 、 (and) 、 ~ (not)

這些必須用括號來分組,因為默認情況下, Python 會將 df['A'] 2 df['B'] 3 這樣的表達式評估為 df['A'] (2 df['B']) 3 ,而理想的執(zhí)行順序是 (df['A'] 2) (df['B'] 3)

使用一個布爾向量來索引一個 Series ,其工作原理和 NumPy ndarray 一樣。

您可以使用一個與 DataFrame 的索引長度相同的布爾向量從 DataFrame 中選擇行

列表推導(dǎo)式和 Series 的 map 函數(shù)可用于產(chǎn)生更復(fù)雜的標準

我們可以使用布爾向量結(jié)合其他索引表達式,在多個軸上索引

iloc 支持兩種布爾索引。如果索引器是一個布爾值 Series ,就會引發(fā)異常。

例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會引發(fā) ValueError 。

Python其實很簡單 第十九章 Pandas之Series與DataFrame

19.1安裝Anaconda

Anaconda是Python的一個開源發(fā)行版本,它預(yù)裝了豐富的第三方庫,而且主要面向科學(xué)計算和數(shù)據(jù)分析,使用起來要比原版的Python更省時省力。

Anaconda官方下載網(wǎng)址為:。下載和安裝的方法很簡單,若有問題可以在網(wǎng)上搜索相關(guān)內(nèi)容學(xué)習(xí)解決。

安裝Anaconda之后,就會發(fā)現(xiàn)在Anaconda目錄下同時安裝了Jupyter Notebook、Spyder等工具,我們接下來主要使用Spyder進行開發(fā)。關(guān)于Spyder的使用方法非常簡單,大家也可以去網(wǎng)上搜索學(xué)習(xí)。

雖然Anaconda已經(jīng)預(yù)裝了很多常用的包,但有時我們也需要自己安裝一些包??梢栽陂_始菜單中選擇“Anaconda Anaconda Prompt”命令,在命令行輸入conda install ( 代表包名)即可安裝,也可以輸入pip install 。

19.2數(shù)據(jù)分析包Pandas

Pandas是Python的一個數(shù)據(jù)分析包,Anaconda安裝時已經(jīng)附帶安裝了Pandas包。

Pandas數(shù)據(jù)結(jié)構(gòu)有三種:Series(一維數(shù)組)、DataFrame(二維數(shù)組)和Panel(三維數(shù)組),其中最常用的是前兩種數(shù)據(jù)結(jié)構(gòu)。

19.2.1 Series

Series(序列)用于存儲一行或一列數(shù)據(jù),以及與之相關(guān)的索引的集合。

語法格式如下:

Series([數(shù)據(jù)1,數(shù)據(jù)2,......], index=[索引1,索引2,......])

例:

from pandas import Series

s=Series(['張三','李四','王五'],index=[1,2,3])

print(s)

輸出結(jié)果如下:

1 張三

2 李四

3 王五

dtype: object

上面建立序列時指定了索引,若不指定,則默認的索引值從0開始。如下:

s=Series(['張三','李四','王五'])

輸出結(jié)果為:

0 張三

1 李四

2 王五

dtype: object

索引值也可以為字符串。如下:

from pandas import Series

s=Series(['張三','李四','王五'],index=['A','B','C'])

print(s)

輸出結(jié)果為:

A 張三

B 李四

C 王五

dtype: object

1、訪問序列

(1)可以通過索引訪問序列,如:

from pandas import Series

s=Series(['張三','李四','王五'])

print(s)

print(s[0])

print(s[1:])

運行結(jié)果如下:

0 張三

1 李四

2 王五

dtype: object #print(s)輸出

張三 #print(s[0])輸出

1 李四

2 王五

dtype: object #print(s[1:])輸出

(2)通過值獲取索引值

from pandas import Series

s=Series(['張三','李四','王五'],index=['A','B','C'])

print(s.index[s.values=='李四'])

運行結(jié)果:

Index(['B'], dtype='object')

(3)判斷值是否存在

from pandas import Series

s=Series(['張三','李四','王五'],index=['A','B','C'])

f='李四' in s.values

print(f)

運行結(jié)果:

True

(4)定位獲取

from pandas import Series

s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])

print(s[[0,2,1]])

運行結(jié)果:

A 張三

C 王五

B 李四

dtype: object

2、修改序列

(1)追加序列,如:

from pandas import Series

s=Series(['張三','李四','王五'],index=['A','B','C'])

s1=Series(['孫六'],index=['D'])

s=s.append(s1)

print(s)

運行結(jié)果:

A 張三

B 李四

C 王五

D 孫六

dtype: object

(2)修改序列的值

from pandas import Series

s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])

s[1]='李飛'

print(s)

運行結(jié)果:

A 張三

B 李飛

C 王五

D 孫六

dtype: object

不知道索引,僅知道要修改的值,也可通過值查找到索引后,再修改序列的值。如:

s[s.index[s.values=='李四']]='李飛'

這樣也可以將“李四”修改為“李飛。

(3)修改索引

from pandas import Series

s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])

s.index=[0,1,2,3]

print(s)

運行結(jié)果:

0 張三

1 李四

2 王五

3 孫六

dtype: object

(4)刪除元素

from pandas import Series

s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])

s=s.drop('A')

print(s)

運行結(jié)果:

B 李四

C 王五

D 孫六

dtype: object

(5)重新排序

可以按照索引排序,使用sort_index(ascending=True)方法對index進行排序操作。

from pandas import Series

s=Series(['張三','李四','王五','孫六'],index=['A','B','C','D'])

s=s.sort_index(ascending=False) # ascending=False表示按降序排列

print(s)

運行結(jié)果:

D 孫六

C 王五

B 李四

A 張三

dtype: object

(6)重置索引

重置索引可以使用reindex()。如果index列表中的元素多于序列的值,可用fill_value=0這樣的語句填充。

s=s.reindex(['D','C','B','A'])

如果index列表中的元素多于序列的值,可用fill_value=0這樣的語句填充。

s=s.reindex(['D','C','B','A'], fill_value=0)

19.2.2 DataFrame

DataFrame(數(shù)據(jù)框架)用于存儲多行和多列的數(shù)據(jù)集合。它是Series的容器,類似于Excel中二維表格。

定義一個DataFrame的語法格式如下:

df=DataFrame({列名1 : 序列1,列名2 : 序列2,.......列名n : 序列n}, index=序列 )

例如,有如下二維表:

姓名

性別

年齡

張三

18

李四

19

王五

17

保存到DataFrame中可以用如下方法:

from pandas import Series

from pandas import DataFrame

name=Series(['張三','李四','王五'])

sex=Series(['男','女','男'])

age=Series([18,19,17])

df=DataFrame({'姓名':name,'性別':sex,'年齡':age})

print(df)

運行結(jié)果:

姓名 性別 年齡

0 張三 男 18

1 李四 女 19

2 王五 男 17

從上例可以看出,雖然我們省缺了索引,但系統(tǒng)自動添加了從0開始的索引值。

19.3 DataFrame的基本操作

1、訪問方式

(1)獲取行

print(df[1:2]) # 獲取第1行的值

輸出結(jié)果:

姓名 性別 年齡

1 李四 女 19

print(df[1:3]) #獲取第1行到第2行的值

輸出結(jié)果:

姓名 性別 年齡

1 李四 女 19

2 王五 男 17

(2)獲取列

print(df['姓名']) #獲取“姓名”列的值

輸出結(jié)果:

0 張三

1 李四

2 王五

Name: 姓名, dtype: object

另一種方法:

print(df[df.columns[0:1]]) #先按照索引號獲取列名,再按照列名讀取

輸出結(jié)果和上面的方法完全一致。

還有一種情況,是獲取唯一值,即將列內(nèi)的重復(fù)值中多余的刪除,僅留下互不相同的值。所用的到方法是unique()。

sex1=Series(df['性別'].unique())

print(sex1)

輸出結(jié)果:

0 男

1 女

dtype: object

(3)獲取指定位置的值

print(df.at[1,'姓名']) # 格式為變量名.at[行號,列名]

輸出結(jié)果:

李四

(4)獲取塊的值

print(df.iloc[0:2,1:3]) # 格式為變量名.iloc[行號1:行號2, 列號1:列號2]

輸出結(jié)果:

性別 年齡

0 男 18

1 女 19

print(df.iloc[:,1:2]) #獲取“性別”列的值

運行結(jié)果:

性別

0 男

1 女

2 男

2、修改、刪除、增加行和列

(1)修改列名

print(df.columns)

df.columns=['name','sex','age']

print(df.columns)

輸出結(jié)果:

Index(['姓名', '性別', '年齡'], dtype='object')

Index(['name', 'sex', 'age'], dtype='object')

可見,列名已經(jīng)由“姓名、性別、年齡”修改為“age、sex、age”了。但這種修改必須把全部列名都一一列舉,不能有遺漏,否則就會出錯。如:

df.columns=['name','sex']

此時會報錯:ValueError: Length mismatch: Expected axis has 3 elements, new values have 2 elements。

(2)修改行索引

df.index=[1,2,3]

(3)刪除行

df.drop(1,axis=0) # axis=0表示行軸,也可以省略

(4)刪除列

df.drop(‘性別’,axis=1) # axis=0表示列軸

也可以使用另一種方法:

del df['性別']

(5)增加列

df['電話']=['1111111','2222222','3333333']

print(df)

運行結(jié)果:

姓名 性別 年齡 電話

0 張三 男 18 1111111

1 李四 女 19 2222222

2 王五 男 17 3333333

(6)增加行

df.loc[len(df)]=['孫六','男','20']

(7)追加

from pandas import Series

from pandas import DataFrame

name=Series(['張三','李四','王五'])

sex=Series(['男','女','男'])

age=Series([18,19,17])

df=DataFrame({'姓名':name,'性別':sex,'年齡':age}) # 建立DataFrame,變量名為df

name1=Series(['孫六','候七'])

sex1=Series(['男','女'])

age1=Series([19,17])

df1=DataFrame({'姓名':name1,'性別':sex1,'年齡':age1})

# 建立DataFrame,變量名為df1

df=df.append(df1,ignore_index=True)

# 將對df1追加到df后面,參數(shù)ignore_index=True表示重新索引

print(df)

運行結(jié)果:

姓名 性別 年齡

0 張三 男 18

1 李四 女 19

2 王五 男 17

3 孫六 男 19

4 候七 女 17

文章名稱:python重置索引函數(shù),python dataframe重新索引
鏈接分享:http://chinadenli.net/article10/heiodo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、定制開發(fā)、營銷型網(wǎng)站建設(shè)全網(wǎng)營銷推廣、外貿(mào)網(wǎng)站建設(shè)、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)