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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

【Pandas库】(6) 索引操作--改、查、高级索引

發布時間:2023/11/27 生活经验 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【Pandas库】(6) 索引操作--改、查、高级索引 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

各位同學好,今天我和大家分享一下Pandas庫的索引操作中的修改值、查找值、高級索引

首先,我們先定義兩個變量ps1存放Series數據,pd1存放DataFrame數據,以便后續操作。
?

import pandas as pd
import numpy as np
ps1 = pd.Series(range(5),index=['a','b','c','d','e'])
pd1 = pd.DataFrame(np.arange(1,10).reshape(3,3),index=['a','b','c'],columns=['A','B','C'])


1. 索引操作 -- 改

1.1 對 Series 修改

利用標簽索引修改: Series名[ 標簽名 ] = 值

利用位置索引修改: Series名[ 位置數?] = 值

# series修改
ps1['a'] = 999  #標簽索引
ps1[1] = 888  #位置索引

將標簽名'a'對應的值改成999,將位置索引1對應的值改為888。標簽索引'a'對應的位置索引是0


1.2 對 DataFrame 修改

(1)利用標簽索引修改一列數據:?變量名[ 列標簽名?] = 值/列表

#(1)利用索引修改一列的數據
pd1["A"] = 100
pd1["B"] = [9,99,999]
pd1["F"] = [8,8,8]    #索引名不存在,增加一列

(2)利用對象修改一列數據:?變量名.列標簽名 = 值/列表

#(2)利用對象修改一列的數據  變量名.索引 = [數據]
pd1.A = 0
pd1.C = [1,11,111]

(3)利用高級索引修改一行數據: 變量名.loc[ 行標簽名 ] = 值/列表

(4)利用高級索引修改某一個數據:變量名.loc[ 行標簽名, 列標簽名?] = 值

#(3)loc 標簽索引 
# 修改一行
pd1.loc['a'] = 777  # a索引對應的一行都變成777
#(4)修改單個數據 某行某列
pd1.loc['a','A'] = 1000


2. 索引操作 -- 查

2.1 對 Series 操作

(1)利用標簽索引、位置索引查某個值: Series名[ 標簽名 / 位置索引 ]

a1 = ps1['a']  #標簽索引查值
a2 = ps1[0]    #位置索引查值

(2)利用切片索引查一塊值:?

????????標簽索引切片,顧頭顧尾: Series名[ 標簽名1 : 標簽名2 ]

????????位置索引切片,顧頭不顧尾:?Series名[ 位置索引1 : 位置索引2 ]

# 切片索引
a3 = ps1['b':'d']  #標簽切片,顧頭顧尾
a4 = ps1[1:4]  #位置切片,顧頭不顧尾

?(3)利用不連續索引查多個值:

????????使用標簽索引: 變量名[[?標簽名1 , 標簽名2 ]]? ? ?

????????使用位置索引:?變量名[[ 位置索引1?, 位置索引2 ]]

# 不連續索引
a5 = ps1[['b','e']]  #標簽索引,兩個中括號,代表取的是b這一行和e這一行,是不連續的
a6 = ps1[[0,2,3]]  #位置索引

(4) 利用布爾索引取滿足條件的值: 變量名[ 條件?]

滿足條件則為True,輸出滿足條件的值,如下式條件ps1>2。ps1中的值有0、1、2、3、4。其中對于ps>1這個條件。0,1,2都是False;3,4是True。因此輸出的是3、4。

# 布爾索引
a7 = ps1[ps1>2]  #取出ps1中所有大于2的值


2.2 對 DataFrame 操作

(1)利用標簽索引查某一列變量名[ 標簽名 ]? ? ? ?

(2)利用標簽索引查多列:? ? 變量名[[ 標簽名1?, 標簽名2 ]]

# 只能用標簽索引操作,不能用位置索引
a8 = pd1["A"]  #標簽索引,輸出一列,返回series類型
a9 = pd1[["A","C"]]  #不連續索引取多列

(3)利用標簽索引取某一個值 變量名[ 列索引名 ][ 行索引名 ]

# 選取一個值
a10 = pd1['A']['a']

(4)利用切片索引查連續幾行數據:

????????位置索引切片,顧頭不顧尾:?變量名[ 位置索引1 : 位置索引2 ]

????????標簽索引切片,顧頭顧尾: 變量名[ 標簽名1 : 標簽名2 ]

# 切片處理,獲取的是行
a11 = pd1[:2]  # 顧頭不顧尾,獲取前兩行
a12 = pd1['a':'c']  # 顧頭顧尾


3. 高級索引

3.1? loc 標簽索引 --- 基于標簽名的索引

(1)對 series 操作

????????利用標簽索引切片: Series名[ 標簽名1?: 標簽名2 ]

? ? ? ? 利用高級索引切片: Series名.loc[ 標簽名1?: 標簽名2 ]

兩種寫法得到的結果相同

# 切片操作
a12 = ps1['a':'c']
a13 = ps1.loc['a':'c']

(2)對 DataFrame 操作

????????利用高級索引進行切片操作:

? ? ? ? 獲取第幾行第幾列的某個值 變量名.loc[ 行索引名 , 列索引名 ]

????????獲取連續幾行中某一列的數據:?變量名.loc[ 行索引名1 : 行索引名2?, 列索引名 ]

????????獲取指定的某幾行某幾列的一塊區域的數據:?

????????變量名.loc[ 行索引名1 : 行索引名2?, 列索引名1 : 列索引名2?]

# frame名.loc[行索引,列索引]
a14 = pd1.loc['a','A']     #取出第a行第A列的數
a15 = pd1.loc['a':'b','A']   #取出'a'到'b'行中第'A'列的數據
a16 = pd1.loc['a':'b','A':'C']  #取出'a'到'b'行中第'A'到'C'列的數據


3.2? iloc 位置索引

(1)對 Series 操作

????????利用位置索引切片: Series名[ 位置索引1 : 位置索引2 ]

????????利用高級索引切片: Series名.iloc[ 位置索引1?: 位置索引2 ]

位置索引切片顧頭不顧尾,兩種切片方法結果相同

# 對series操作
a17 = ps1[1:3]  #位置切片,顧頭不顧尾
a18 = ps1.iloc[1:3]

(2)對 DataFrame 操作

????????列用高級索引進行切片操作:

? ? ? ? 獲取第幾行第幾列的某個值 變量名.iloc[ 行位置索引?, 列位置索引?]

????????獲取連續幾行中某一列的數據:?變量名.iloc[ 行位置1 : 行位置2?, 列位置?]

????????獲取指定的某幾行某幾列的一塊區域的數據:?

????????變量名.iloc[ 行位置1 : 行位置2?, 列位置1 : 列位置2?]

位置索引顧頭不顧尾

# frame名.iloc[行索引,列索引]   顧頭不顧尾
a19 = pd1.iloc[0,2]   # 獲取第0行第2列的值
a20 = pd1.iloc[0:2,2]   # 獲取第0到1行中第2列的值
a21 = pd1.iloc[0:2,1:3]  # 獲取第0到1行中第1到2行的一塊數據

總結

以上是生活随笔為你收集整理的【Pandas库】(6) 索引操作--改、查、高级索引的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。