欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Pandas通過index選擇并獲取行和列

 更新時間:2023年02月23日 10:27:36   作者:餃子大人  
本文主要介紹了Pandas通過index選擇并獲取行和列,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

通過指定pandas.DataFrame和pandas.Series的index(下標(biāo)),可以選擇和獲取行/列或元素的值。根據(jù)[]中指定的值的類型,可以獲取的數(shù)據(jù)會有所不同。

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

獲取pandas.DataFrame的列

  • 列名稱:將單個列作為pandas.Series獲得
  • 列名稱的列表:將單個或多個列作為pandas.DataFrame獲得

獲取pandas.DataFrame的行

  • 行名?行號的切片:將單行或多行作為pandas.DataFrame獲得

獲取pandas.Series的值

  • 標(biāo)簽名稱:獲取每種類型的單個元素的值
  • 標(biāo)簽名稱/編號列表:將單個或多個元素的值作為pandas.Series獲得
  • 標(biāo)簽名稱/數(shù)字切片:將單個元素或多個元素的值作為pandas.Series獲得

獲取pandas.DataFrame元素的值
行名/列名是整數(shù)值時的注意事項(xiàng)

在pandas.DataFrame的情況下,如果您不習(xí)慣該規(guī)范,則會感到困惑,例如,獲取列作為列表,獲取行作為切片。通過使用at,iat,loc和iloc,可以更清楚地選擇范圍。您還可以使用pandas.DataFrame,切片列提取元素值,并按行名/行號或列表選擇行。

請參閱以下文章。

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

在此示例代碼中,read_csv讀取并使用以下csv數(shù)據(jù)。

import pandas as pd

df = pd.read_csv('./data/28/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

還可以使用set_index()將現(xiàn)有的DataFrame列指定為索引。

Pandas.DataFrame,重置列的行名(set_index)

獲取pandas.DataFrame的列

列名稱:將單個列作為pandas.Series獲得

如果僅在[]中指定列名(列標(biāo)簽),則將提取所選列并將其作為pandas.Series獲取。

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

print(df.age)
print(type(df.age))
# name
# Alice ? ? ?24
# Bob ? ? ? ?42
# Charlie ? ?18
# Dave ? ? ? 68
# Ellen ? ? ?24
# Frank ? ? ?30
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

列名稱的列表:將單個或多個列作為pandas.DataFrame獲得

如果指定列名列表,則將提取選定的多個列并將其檢索為pandas.DataFrame。

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

即使在具有一個元素的列表的情況下,它也成為pandas.DataFrame的一列。不是pandas.Series。

print(df[['age']])
print(type(df[['age']]))
#          age
# name        
# Alice     24
# Bob       42
# Charlie   18
# Dave      68
# Ellen     24
# Frank     30
# <class 'pandas.core.frame.DataFrame'>

如果是切片,它將是一個空的pandas.DataFrame。因?yàn)榍衅灰暈樾幸?guī)范(請參見下文)。

print(df['age':'point'])
# Empty DataFrame
# Columns: [age, state, point]
# Index: []

也可以使用loc進(jìn)行列切片。另外,如果使用iloc,則可以按列號而不是列名(列標(biāo)簽)指定。有關(guān)詳細(xì)信息,請參見以下文章。

Pandas獲取和修改任意位置的值(at,iat,loc,iloc

print(df.loc[:, 'age':'point'])
print(type(df.loc[:, 'age':'point']))
# ? ? ? ? ?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
# <class 'pandas.core.frame.DataFrame'>

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

獲取pandas.DataFrame的行

行名?行號的切片:將單行或多行作為pandas.DataFrame獲得

如果在[]中指定切片,則可以提取并獲取相應(yīng)范圍內(nèi)的多行作為pandas.DataFrame。

print(df[1:4])
print(type(df[1:4]))
#          age state  point
# name                     
# Bob       42    CA     92
# Charlie   18    CA     70
# Dave      68    TX     70
# <class 'pandas.core.frame.DataFrame'>

可以指定一個負(fù)值或指定一個步驟,例如start:stop:step。您可以提取并獲得奇數(shù)或偶數(shù)行。

print(df[:-3])
print(type(df[1:-3]))
# ? ? ? ? ?age state ?point
# name ? ? ? ? ? ? ? ? ? ??
# Alice ? ? 24 ? ?NY ? ? 64
# Bob ? ? ? 42 ? ?CA ? ? 92
# Charlie ? 18 ? ?CA ? ? 70
# <class 'pandas.core.frame.DataFrame'>

print(df[::2])
print(type(df[::2]))
# ? ? ? ? ?age state ?point
# name ? ? ? ? ? ? ? ? ? ??
# Alice ? ? 24 ? ?NY ? ? 64
# Charlie ? 18 ? ?CA ? ? 70
# Ellen ? ? 24 ? ?CA ? ? 88
# <class 'pandas.core.frame.DataFrame'>

print(df[1::2])
print(type(df[1::2]))
# ? ? ? ?age state ?point
# name ? ? ? ? ? ? ? ? ??
# Bob ? ? 42 ? ?CA ? ? 92
# Dave ? ?68 ? ?TX ? ? 70
# Frank ? 30 ? ?NY ? ? 57
# <class 'pandas.core.frame.DataFrame'>

如果它不是切片,則它是無用的;如果直接指定行號,則會發(fā)生錯誤。

# print(df[1])
# KeyError: 1

即使只選擇了一行,您也可以獲得pandas.DataFrame。它不會成為pandas.Series。

print(df[1:2])
print(type(df[1:2]))
# ? ? ? age state ?point
# name ? ? ? ? ? ? ? ? ?
# Bob ? ?42 ? ?CA ? ? 92
# <class 'pandas.core.frame.DataFrame'>

print(df['Bob':'Ellen'])
print(type(df['Bob':'Ellen']))
# ? ? ? ? ?age state ?point
# name ? ? ? ? ? ? ? ? ? ??
# Bob ? ? ? 42 ? ?CA ? ? 92
# Charlie ? 18 ? ?CA ? ? 70
# Dave ? ? ?68 ? ?TX ? ? 70
# Ellen ? ? 24 ? ?CA ? ? 88
# <class 'pandas.core.frame.DataFrame'>

如果使用loc或iloc,則可以為一行單獨(dú)指定行名和行號,并將其獲取為pandas.Series,也可以在列表中選擇多行。

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

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

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

獲取pandas.Series的值

以以下pandas.Series為例。

s = df['age']
print(s)
# name
# Alice      24
# Bob        42
# Charlie    18
# Dave       68
# Ellen      24
# Frank      30
# Name: age, dtype: int64

標(biāo)簽名稱:獲取每種類型的單個元素的值

如果標(biāo)簽名稱/編號是獨(dú)立指定的,則可以按原樣獲得該值。如果是數(shù)字,則可以從末尾開始使用負(fù)值指定位置。 -1是結(jié)尾(最后一個)。

也可以在后面指定標(biāo)簽名稱,就像pandas.DataFrame的列名稱規(guī)范一樣。但是,請注意,如果列名與現(xiàn)有方法名或?qū)傩悦丿B,則將優(yōu)先使用。

print(s[3])
print(type(s[3]))
# 68
# <class 'numpy.int64'>

print(s['Dave'])
print(type(s['Dave']))
# 68
# <class 'numpy.int64'>

print(s[-1])
print(type(s[-1]))
# 30
# <class 'numpy.int64'>

print(s.Dave)
print(type(s.Dave))
# 68
# <class 'numpy.int64'>

標(biāo)簽名稱/編號列表:將單個或多個元素的值作為pandas.Series獲得
在列表的情況下,可以將多個選定的值作為pandas.Series獲得。

print(s[[1, 3]])
print(type(s[[1, 3]]))
# name
# Bob ? ? 42
# Dave ? ?68
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

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

對于具有1個元素的列表,它是pandas.Series,具有1個元素,而不是元素本身。

print(s[[1]])
print(type(s[[1]]))
# name
# Bob ? ?42
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

print(s[['Bob']])
print(type(s[['Bob']]))
# name
# Bob ? ?42
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

標(biāo)簽名稱/數(shù)字切片:將單個元素或多個元素的值作為pandas.Series獲得

在切片的情況下,可以將多個選定值作為pandas.Series獲得。如果是標(biāo)簽名稱的一部分,則還會選擇停止線。

print(s[1:3])
print(type(s[1:3]))
# name
# Bob ? ? ? ?42
# Charlie ? ?18
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

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

當(dāng)選擇一個元件,它變得與pandas.Series一種元素。

print(s[1:2])
print(type(s[1:2]))
# name
# Bob ? ?42
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

print(s['Bob':'Bob'])
print(type(s['Bob':'Bob']))
# name
# Bob ? ?42
# Name: age, dtype: int64
# <class 'pandas.core.series.Series'>

獲取pandas.DataFrame元素的值

通過從pandas.DataFrame中提取pandas.Series,然后從該pandas.Series中選擇并獲取值,可以從pandas.DataFrame中獲取元素值。

print(df['age']['Alice'])
# 24

還可以組合切片和列表以提取任何范圍。

print(df['Bob':'Dave'][['age', 'point']])
#          age  point
# name               
# Bob       42     92
# Charlie   18     70
# Dave      68     70

但是,這種重復(fù)索引引用([…])的方法稱為鏈?zhǔn)剿饕?,因此不建議使用,因?yàn)樵跒檫x擇分配值時可能發(fā)生SettingWithCopyWarning。 …

可以使用at,iat,loc和iloc一次指定行和列。這是優(yōu)選的。

print(df.at['Alice', 'age'])
# 24

print(df.loc['Bob':'Dave', ['age', 'point']])
# ? ? ? ? ?age ?point
# name ? ? ? ? ? ? ??
# Bob ? ? ? 42 ? ? 92
# Charlie ? 18 ? ? 70
# Dave ? ? ?68 ? ? 70

行名/列名是整數(shù)值時的注意事項(xiàng)

在到目前為止的示例中,行名/列名是字符串,但是當(dāng)行名/列名是整數(shù)值時要小心。

以下面的pandas.DataFrame為例。

df = pd.DataFrame([[0, 10, 20], [30, 40, 50], [60, 70, 80]],
                  index=[2, 0, 1], columns=[1, 2, 0])
print(df)
#     1   2   0
# 2   0  10  20
# 0  30  40  50
# 1  60  70  80

在[標(biāo)量值]和[列表]的情況下,指定的值被視為列名。

print(df[0])
# 2 ? ?20
# 0 ? ?50
# 1 ? ?80
# Name: 0, dtype: int64

print(df[[0, 2]])
# ? ? 0 ? 2
# 2 ?20 ?10
# 0 ?50 ?40
# 1 ?80 ?70

對于“切片”,將指定的值視為行號,而不是行名。負(fù)值也可以使用。 打?。╠f [:2])

print(df[:2])
# ? ? 1 ? 2 ? 0
# 2 ? 0 ?10 ?20
# 0 ?30 ?40 ?50

print(df[-2:])
# ? ? 1 ? 2 ? 0
# 0 ?30 ?40 ?50
# 1 ?60 ?70 ?80

使用loc(行名)iloc(行號)來明確指定它是行名還是行號。

print(df.loc[:2])
# ? ?1 ? 2 ? 0
# 2 ?0 ?10 ?20

print(df.iloc[:2])
# ? ? 1 ? 2 ? 0
# 2 ? 0 ?10 ?20
# 0 ?30 ?40 ?50

s = df[2]
print(s)
# 2 ? ?10
# 0 ? ?40
# 1 ? ?70
# Name: 2, dtype: int64

pandas.Series認(rèn)為指定的值是標(biāo)簽名稱而不是數(shù)字。

print(s[0])
# 40

使用at和iat可以清楚地指定標(biāo)簽名稱或編號。 loc和iloc很好,但是at和iat更快。

print(s.at[0])
# 40

print(s.iat[0])
# 10

特別要注意的是,如果嘗試獲取最后一個值并嘗試獲取[-1],它將被視為對名為-1的標(biāo)簽的值的選擇。確定,如果您使用iat。

# print(s[-1])
# KeyError: -1

print(s.iat[-1])
# 70

這樣,當(dāng)行名和列名是整數(shù)值時,最好使用at,iat,loc和iloc以避免混淆。

到此這篇關(guān)于Pandas通過index選擇并獲取行和列的文章就介紹到這了,更多相關(guān)Pandas index獲取行和列內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 基于python tkinter的點(diǎn)名小程序功能的實(shí)例代碼

    基于python tkinter的點(diǎn)名小程序功能的實(shí)例代碼

    這篇文章主要介紹了基于python tkinter的點(diǎn)名小程序,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-08-08
  • Python自動化測試框架之unittest使用詳解

    Python自動化測試框架之unittest使用詳解

    unittest是Python自動化測試框架之一,提供了一系列測試工具和接口,支持單元測試、功能測試、集成測試等多種測試類型。unittest使用面向?qū)ο蟮乃枷雽?shí)現(xiàn)測試用例的編寫和管理,可以方便地?cái)U(kuò)展和定制測試框架,支持多種測試結(jié)果輸出格式
    2023-04-04
  • 詳細(xì)介紹pandas的DataFrame的append方法使用

    詳細(xì)介紹pandas的DataFrame的append方法使用

    這篇文章主要介紹了詳細(xì)介紹pandas的DataFrame的append方法使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 關(guān)于numpy.array的shape屬性理解

    關(guān)于numpy.array的shape屬性理解

    這篇文章主要介紹了關(guān)于numpy.array的shape屬性理解,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-09-09
  • numpy.random.seed()的使用實(shí)例解析

    numpy.random.seed()的使用實(shí)例解析

    這篇文章主要介紹了numpy.random.seed()的使用實(shí)例解析,分享了相關(guān)代碼示例,小編覺得還是挺不錯的,具有一定借鑒價值,需要的朋友可以參考下
    2018-02-02
  • Python繪制專業(yè)的K線圖 源代碼解析

    Python繪制專業(yè)的K線圖 源代碼解析

    這篇文章主要介紹了Python繪制專業(yè)的K線圖,使用Python繪制一幅專業(yè)的K線圖,是量化投資和金融數(shù)據(jù)分析的必備功課。下面我將從K線圖簡介、數(shù)據(jù)獲取、K線圖繪制及成交量繪制等方面,結(jié)合源代碼,一步步實(shí)現(xiàn)專業(yè)K線圖的繪制,需要的朋友可以參考下
    2021-10-10
  • python 提取html文本的方法

    python 提取html文本的方法

    在解決自然語言處理問題時,有時你需要獲得大量的文本集。互聯(lián)網(wǎng)是文本的最大來源,但是從任意HTML頁面提取文本是一項(xiàng)艱巨而痛苦的任務(wù)。本文將講述python高效提取html文本的方法
    2021-05-05
  • Python3 用什么IDE開發(fā)工具比較好

    Python3 用什么IDE開發(fā)工具比較好

    這篇文章主要介紹了Python3 用什么IDE開發(fā)工具比較好,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-11-11
  • TensorFlow實(shí)現(xiàn)AutoEncoder自編碼器

    TensorFlow實(shí)現(xiàn)AutoEncoder自編碼器

    這篇文章主要為大家詳細(xì)介紹了TensorFlow實(shí)現(xiàn)AutoEncoder自編碼器,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-03-03
  • python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例

    python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例

    這篇文章主要介紹了python 圖像判斷,清晰度(明暗),彩色與黑白實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06

最新評論