最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)

 更新時(shí)間:2022年01月06日 15:49:21   作者:餃子大人  
在我們對(duì)數(shù)據(jù)進(jìn)行選擇之后,需要對(duì)特定的數(shù)據(jù)進(jìn)行設(shè)置更改,設(shè)置,下面這篇文章主要給大家介紹了關(guān)于Python?Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

前言

要在pandas.DataFrame中的任何位置檢索或更改數(shù)據(jù),可以使用at,iat,loc,iloc。

  • 位置的指定方法
    • at,loc:行標(biāo)簽(行名),列標(biāo)簽(列名)
    • iat,iloc:行號(hào),列號(hào)
  • 選擇和獲取/更改的數(shù)據(jù)
    • at,iat:?jiǎn)蝹€(gè)元素的值
    • loc,iloc:?jiǎn)蝹€(gè)元素和多個(gè)元素值
      • 選擇的行/列的獲取和修改
      • 列表和切片的范圍指定
  • 其他
    • at和iat的處理速度比loc和iloc更快
    • 如果要通過(guò)組合標(biāo)簽和數(shù)字來(lái)指定位置,請(qǐng)?jiān)趇ndex或column處或loc處組合(末尾說(shuō)明)

在此將描述以下內(nèi)容。

  • at,iat:選擇,獲取和更改單個(gè)元素的值
  • loc,iloc:選擇,獲取和更改單個(gè)和多個(gè)元素的值
    • 選擇單個(gè)元素的值
    • 選擇多個(gè)元素值
    • 選擇行/列
  • 當(dāng)行名和列名具有重復(fù)值時(shí)
  • 通過(guò)數(shù)字和標(biāo)簽指定位置
  • 在pandas.Series中選擇行時(shí)的隱式類型轉(zhuǎn)換

還可以使用直接索引df []選擇/獲取pandas.DataFrame的行/列和pandas.Series的元素值。

在此示例代碼中,將以下csv數(shù)據(jù)與read_csv結(jié)合使用。

          age state  point
 name
 Alice     24    NY     64
 Bob       42    CA     92
 Charlie   18    CA     70
 Dave      68    TX     70
 Ellen     24    CA     88
 Frank     30    NY     57

第一列設(shè)置為參數(shù)index_col中的index。

import pandas as pd

df = pd.read_csv('./data/04/sample_pandas_normal.csv', index_col=0)
print(df)
#          age state  point
# name
# Alice     24    NY     64
# Bob       42    CA     92
# Charlie   18    CA     70
# Dave      68    TX     70
# Ellen     24    CA     88
# Frank     30    NY     57

行標(biāo)簽(索引)和列標(biāo)簽(列)的值如下。

print(df.index.values)
# ['Alice' 'Bob' 'Charlie' 'Dave' 'Ellen' 'Frank']

print(df.columns.values)
# ['age' 'state' 'point']

at,iat:選擇,獲取和更改單個(gè)元素的值

at通過(guò)行標(biāo)簽和列標(biāo)簽指定位置。除了獲取數(shù)據(jù)之外,還可以在該位置設(shè)置(替換)新值。

print(df.at['Bob', 'age'])
print(df.at['Dave', 'state'])
# 42
# TX

df.at['Bob', 'age'] = 60
print(df.at['Bob', 'age'])
# 60

iat通過(guò)行號(hào)和列號(hào)指定位置。行號(hào)和列號(hào)以0開(kāi)頭。

iat和at一樣,iat不僅可以獲取數(shù)據(jù),而且可以在該位置設(shè)置(替代)新值。

print(df.iat[1, 0])
print(df.iat[3, 1])
# 60
# TX

df.iat[1, 0] = 42
print(df.iat[1, 0])
# 42

loc,iloc:選擇,獲取和更改單個(gè)和多個(gè)元素的值

loc和iloc通過(guò)指定范圍不僅可以選擇單個(gè)值,還可以選擇多個(gè)數(shù)據(jù)。

loc通過(guò)行和列標(biāo)簽指定位置,而iloc通過(guò)行和列編號(hào)指定位置。

選擇單個(gè)元素的值

訪問(wèn)單個(gè)值時(shí),它與at和iat相同。 但at和iat的處理速度更快。

print(df.loc['Bob', 'age'])
print(df.iloc[3, 1])
# 42
# TX

除了查看數(shù)據(jù)外,還可以在該位置設(shè)置(替換)新值。

df.loc['Bob', 'age'] = 60
print(df.loc['Bob', 'age'])
# 60

df.iloc[1, 0] = 42
print(df.iloc[1, 0])
# 42

選擇多個(gè)元素值

要訪問(wèn)多個(gè)值,在列表[x,y]或切片[start:stop:step]中指定數(shù)據(jù)的范圍和位置。引用的值將是pandas.Series或pandas.DataFrame。

切片的寫(xiě)入方式與普通切片相同。step可以省略。

print(df.loc['Bob':'Dave', 'age'])
print(type(df.loc['Bob':'Dave', 'age']))
# name
# Bob        42
# Charlie    18
# Dave       68
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

print(df.loc[:'Dave', ['age', 'point']])
print(type(df.loc[:'Dave', 'age':'point']))
#          age  point
# name               
# Alice     24     64
# Bob       42     92
# Charlie   18     70
# Dave      68     70
# <class 'pandas.core.frame.DataFrame'>

print(df.iloc[:3, [0, 2]])
print(type(df.iloc[:3, [0, 2]]))
#          age  point
# name               
# Alice     24     64
# Bob       42     92
# Charlie   18     70
# <class 'pandas.core.frame.DataFrame'>

如果指定了step,則可以提取并獲取奇數(shù)或偶數(shù)行。

print(df.iloc[::2, 0])
print(type(df.iloc[::2, 0]))
# name
# Alice      24
# Charlie    18
# Ellen      24
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

print(df.iloc[1::2, 0])
print(type(df.iloc[1::2, 0]))
# name
# Bob      42
# Dave     68
# Frank    30
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

可以一次更改多個(gè)值。

print(df.loc['Bob':'Dave', 'age'])
# name
# Bob        20
# Charlie    30
# Dave       40
# Name: age, dtype: int64

選擇行/列

若要選擇行或列,可以使用直接索引引用df [],但只能在以下指定方法中使用。

  • 行選擇:行名和行號(hào)的切片
  • 列選擇:列名稱或列名稱列表
print(df['Bob':'Ellen'])
#          age state  point
# name                     
# Bob       20    CA     92
# Charlie   30    CA     70
# Dave      40    TX     70
# Ellen     24    CA     88

print(df[:3])
#          age state  point
# name                     
# Alice     24    NY     64
# Bob       20    CA     92
# Charlie   30    CA     70

print(df['age'])
# name
# Alice      24
# Bob        20
# Charlie    30
# Dave       40
# Ellen      24
# Frank      30
# Name: age, dtype: int64

print(df[['age', 'point']])
#          age  point
# name               
# Alice     24     64
# Bob       20     92
# Charlie   30     70
# Dave      40     70
# Ellen     24     88
# Frank     30     57

當(dāng)使用loc和iloc選擇行或列時(shí),可以比索引參考df []更靈活地指定它。

在loc和iloc中省略該列,則它將是行引用??梢赃x擇無(wú)法通過(guò)索引引用完成的單行,也可以選擇列表中的多行。

print(df.loc['Bob'])
print(type(df.loc['Bob']))
# age      20
# state    CA
# point    92
# Name: Bob, dtype: object
# <class 'pandas.core.series.Series'>

print(df.iloc[[1, 4]])
print(type(df.iloc[[1, 4]]))
#        age state  point
# name                   
# Bob     20    CA     92
# Ellen   24    CA     88
# <class 'pandas.core.frame.DataFrame'>

可以通過(guò)將行規(guī)范設(shè)置為loc和iloc中的(整個(gè)切片)來(lái)引用列??梢允褂盟饕脽o(wú)法完成的切片。也可以在iloc中使用列號(hào)。

print(df.loc[:, 'age':'point'])
print(type(df.loc[:, 'age':'point']))
#          age state  point
# name                     
# Alice     24    NY     64
# Bob       20    CA     92
# Charlie   30    CA     70
# Dave      40    TX     70
# Ellen     24    CA     88
# Frank     30    NY     57
# <class 'pandas.core.frame.DataFrame'>

print(df.iloc[:, [0, 2]])
print(type(df.iloc[:, [0, 2]]))
#          age  point
# name               
# Alice     24     64
# Bob       20     92
# Charlie   30     70
# Dave      40     70
# Ellen     24     88
# Frank     30     57
# <class 'pandas.core.frame.DataFrame'>

當(dāng)行名和列名具有重復(fù)值時(shí)

具有重復(fù)值的行和列也可以在index和columns中指定。

例,其中將具有重復(fù)值的列指定為index。

df_state = pd.read_csv('data/src/sample_pandas_normal.csv', index_col=2)
print(df_state)
#           name  age  point
# state                     
# NY       Alice   24     64
# CA         Bob   42     92
# CA     Charlie   18     70
# TX        Dave   68     70
# CA       Ellen   24     88
# NY       Frank   30     57

print(df_state.index.values)
# ['NY' 'CA' 'CA' 'TX' 'CA' 'NY']

如果在中指定重復(fù)的列名,則numpy.ndarray中將返回多個(gè)值。

print(df_state.at['NY', 'age'])
print(type(df_state.at['NY', 'age']))
# [24 30]
# <class 'numpy.ndarray'>

如果在loc中指定重復(fù)的列名,則它將在pandas.DataFrame或pandas.Series中返回。

print(df_state.loc['NY', 'age'])
print(type(df_state.loc['NY', 'age']))
# state
# NY    24
# NY    30
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

print(df_state.loc['NY', ['age', 'point']])
print(type(df_state.loc['NY', ['age', 'point']]))
#        age  point
# state            
# NY      24     64
# NY      30     57
# <class 'pandas.core.frame.DataFrame'>

在iat或iloc中指定列號(hào)時(shí),即使值重復(fù)也沒(méi)有關(guān)系。

print(df_state.iat[0, 1])
# 24

可以使用index.is_unique和column.is_unique檢查列標(biāo)簽和行標(biāo)簽是否具有唯一值(不重復(fù))。

print(df_state.index.is_unique)
# False

print(df_state.columns.is_unique)
# True

通過(guò)數(shù)字和標(biāo)簽指定位置

如果要使用數(shù)字和標(biāo)簽(例如行號(hào)和列標(biāo)簽)的組合指定位置,則可以在at或loc處使用索引或列??梢园此饕蛄袕男刑?hào)或列號(hào)中獲取行標(biāo)簽和列標(biāo)簽。

print(df)
#          age state  point
# name                     
# Alice     24    NY     64
# Bob       20    CA     92
# Charlie   30    CA     70
# Dave      40    TX     70
# Ellen     24    CA     88
# Frank     30    NY     57

print(df.index[2])
# Charlie

print(df.columns[1])
# state

使用at或loc,可以通過(guò)數(shù)字和標(biāo)簽的組合來(lái)指定位置。

print(df.at[df.index[2], 'age'])
# 30

print(df.loc[['Alice', 'Dave'], df.columns[1]])
# name
# Alice    NY
# Dave     TX
# Name: state, dtype: object

在使用slice start:stop:step進(jìn)行指定時(shí),如果loc使用行標(biāo)簽/列標(biāo)簽,則直到停止為止,但如果iloc使用行號(hào)/列編號(hào),則將直到停止前成為請(qǐng)注意,如果要將stop的值從數(shù)字轉(zhuǎn)換為標(biāo)簽,則需要執(zhí)行類似索引[n-1]的操作。

另外,如下所述,當(dāng)選擇一行時(shí),可以執(zhí)行隱式類型轉(zhuǎn)換。 最好使用上面顯示的索引和列將它們組合為at或loc。

print(df['age'][2])
# 30

print(df.age[2])
# 30

print(df.loc[['Alice', 'Dave']].iloc[:, 1])
# name
# Alice    NY
# Dave     TX
# Name: state, dtype: object

在pandas.Series中選擇行時(shí)的隱式類型轉(zhuǎn)換

當(dāng)loc或iloc中的pandas.Series選擇并獲取一行時(shí),數(shù)據(jù)類型dtype是統(tǒng)一的,因此,如果原始pandas.DataFrame的每一列的數(shù)據(jù)類型不同,則會(huì)執(zhí)行隱式類型轉(zhuǎn)換。

以pandas.DataFrame為例,其中有一列整數(shù)int和一列浮點(diǎn)數(shù)。

df_mix = pd.DataFrame({'col_int': [0, 1, 2], 'col_float': [0.1, 0.2, 0.3]}, index=['A', 'B', 'C'])
print(df_mix)
#    col_int  col_float
# A        0        0.1
# B        1        0.2
# C        2        0.3

print(df_mix.dtypes)
# col_int        int64
# col_float    float64
# dtype: object

使用loc或iloc提取一行將導(dǎo)致float pandas.Series。 int列中的元素將轉(zhuǎn)換為float。

print(df_mix.loc['B'])
# col_int      1.0
# col_float    0.2
# Name: B, dtype: float64

print(type(df_mix.loc['B']))
# <class 'pandas.core.series.Series'>

如果按如下所示編寫(xiě)[],則將pandas.Series元素轉(zhuǎn)換為float。請(qǐng)注意,元素的值將以與原始類型不同的類型獲得。

print(df_mix.loc['B']['col_int'])
# 1.0

print(type(df_mix.loc['B']['col_int']))
# <class 'numpy.float64'>

如上所述,最好使用at和iat而不是重復(fù)編寫(xiě)[],loc和iloc。如果是at或iat,則可以獲取原始類型的元素。

print(df_mix.at['B', 'col_int'])
# 1

print(type(df_mix.at['B', 'col_int']))
# <class 'numpy.int64'>

如果在loc或iloc中指定一個(gè)包含1個(gè)元素的列表,它將是一行的pandas.DataFrame而不是pandas.Series。當(dāng)然,在這種情況下,將保留原始數(shù)據(jù)類型dtype。

print(df_mix.loc[['B']])
#    col_int  col_float
# B        1        0.2

print(type(df_mix.loc[['B']]))
# <class 'pandas.core.frame.DataFrame'>

print(df_mix.loc[['B']].dtypes)
# col_int        int64
# col_float    float64
# dtype: object

總結(jié)

到此這篇關(guān)于Python Pandas如何獲取和修改任意位置的值(at,iat,loc,iloc)的文章就介紹到這了,更多相關(guān)Pandas獲取修改任意位置的值內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python 制作子彈圖

    Python 制作子彈圖

    這篇文章主要介紹了Python 制作子彈圖,眾所周知,Python 的應(yīng)用是非常廣泛的,今天我們就通過(guò) matplotlib 庫(kù)學(xué)習(xí)下如何制作精美的子彈圖,需要的朋友可以參考一下
    2021-12-12
  • Python直接賦值、淺拷貝與深度拷貝實(shí)例分析

    Python直接賦值、淺拷貝與深度拷貝實(shí)例分析

    這篇文章主要介紹了Python直接賦值、淺拷貝與深度拷貝,結(jié)合實(shí)例形式分析了Python直接賦值、淺拷貝與深度拷貝的概念、原理、用法及相關(guān)操作注意事項(xiàng),需要的朋友可以參考下
    2019-06-06
  • 解決ROC曲線畫(huà)出來(lái)只有一個(gè)點(diǎn)的問(wèn)題

    解決ROC曲線畫(huà)出來(lái)只有一個(gè)點(diǎn)的問(wèn)題

    今天小編就為大家分享一篇解決ROC曲線畫(huà)出來(lái)只有一個(gè)點(diǎn)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-02-02
  • 詳解如何通過(guò)Python制作一個(gè)密碼生成器

    詳解如何通過(guò)Python制作一個(gè)密碼生成器

    定期更換密碼是一種非常重要的安全措施,這種做法可以有效地保護(hù)你的賬戶和個(gè)人信息不受黑客和網(wǎng)絡(luò)攻擊者的侵害。所以本文就來(lái)用Python制作一個(gè)密碼生成器吧
    2023-05-05
  • Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟

    Django集成富文本編輯器summernote的實(shí)現(xiàn)步驟

    在最近的項(xiàng)目中小編使用了這個(gè)富文本編輯器,選擇它的主要原因是配置非常簡(jiǎn)單,默認(rèn)支持普通用戶上傳圖片(不像ckeditor默認(rèn)只有staff user才能上傳圖片。如果要讓普通用戶上傳圖片,還需修改源碼裝飾器)?,F(xiàn)在讓我們來(lái)看看如何使用這個(gè)富文本編輯器
    2021-05-05
  • python安裝whl包并解決依賴關(guān)系的實(shí)現(xiàn)

    python安裝whl包并解決依賴關(guān)系的實(shí)現(xiàn)

    本文主要介紹了python安裝whl包并解決依賴關(guān)系的實(shí)現(xiàn),文中通過(guò)圖文示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2025-02-02
  • python發(fā)送郵件腳本

    python發(fā)送郵件腳本

    這篇文章主要為大家詳細(xì)介紹了發(fā)送郵件python腳本,支持多個(gè)附件,中文,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • Pytorch寫(xiě)數(shù)字識(shí)別LeNet模型

    Pytorch寫(xiě)數(shù)字識(shí)別LeNet模型

    這篇文章主要介紹了Pytorch寫(xiě)數(shù)字識(shí)別LeNet模型,LeNet-5是一個(gè)較簡(jiǎn)單的卷積神經(jīng)網(wǎng)絡(luò),??LeNet-5?這個(gè)網(wǎng)絡(luò)雖然很小,但是它包含了深度學(xué)習(xí)的基本模塊:卷積層,池化層,全連接層。是其他深度學(xué)習(xí)模型的基礎(chǔ),?這里我們對(duì)LeNet-5進(jìn)行深入分析,需要的朋友可以參考下
    2022-01-01
  • Windows下安裝Scrapy

    Windows下安裝Scrapy

    今天小編就為大家分享一篇關(guān)于Windows下安裝Scrapy,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2018-10-10
  • python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法

    最近朋友在學(xué)Selenium的時(shí)候遇到一個(gè)問(wèn)題,當(dāng)執(zhí)行完selenium程序后,瀏覽器會(huì)閃退也就是自動(dòng)關(guān)閉,這篇文章主要給大家介紹了關(guān)于python用selenium打開(kāi)瀏覽器后秒關(guān)閉瀏覽器的解決辦法,需要的朋友可以參考下
    2023-07-07

最新評(píng)論

吴江市| 孟村| 印江| 五莲县| 右玉县| 那曲县| 拉孜县| 邓州市| 岑溪市| 大姚县| 芦溪县| 前郭尔| 长子县| 芜湖县| 扎鲁特旗| 临沭县| 南川市| 隆安县| 徐水县| 昌吉市| 布拖县| 分宜县| 西贡区| 芮城县| 太白县| 博野县| 瑞安市| 湟中县| 夏邑县| 沙河市| 泸州市| 榆林市| 铅山县| 汝南县| 隆昌县| 宝兴县| 凤山市| 新泰市| 鲁甸县| 禄劝| 巧家县|