iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Pandas怎么通过index选择并获取行和列
  • 173
分享到

Pandas怎么通过index选择并获取行和列

2023-07-05 05:07:22 173人浏览 泡泡鱼
摘要

本篇内容主要讲解“pandas怎么通过index选择并获取行和列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pandas怎么通过index选择并获取行和列”吧!通过指定pandas.DataF

本篇内容主要讲解“pandas怎么通过index选择并获取行和列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pandas怎么通过index选择并获取行和列”吧!

通过指定pandas.DataFrame和pandas.Series的index(下标),可以选择和获取行/列或元素的值。根据[]中指定的值的类型,可以获取的数据会有所不同。

将描述以下内容。

获取pandas.DataFrame的列

  • 列名称:将单个列作为pandas.Series获得

  • 列名称的列表:将单个或多个列作为pandas.DataFrame获得

获取pandas.DataFrame的行

  • 行名・行号的切片:将单行或多行作为pandas.DataFrame获得

获取pandas.Series的值

  • 标签名称:获取每种类型的单个元素的值

  • 标签名称/编号列表:将单个或多个元素的值作为pandas.Series获得

  • 标签名称/数字切片:将单个元素或多个元素的值作为pandas.Series获得

获取pandas.DataFrame元素的值
行名/列名是整数值时的注意事项

在pandas.DataFrame的情况下,如果您不习惯该规范,则会感到困惑,例如,获取列作为列表,获取行作为切片。通过使用at,iat,loc和iloc,可以更清楚地选择范围。您还可以使用pandas.DataFrame,切片列提取元素值,并按行名/行号或列表选择行。

请参阅以下文章。

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

在此示例代码中,read_csv读取并使用以下csv数据。

import pandas as pddf = 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()将现有的DataFrame列指定为索引

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

获取pandas.DataFrame的列

列名称:将单个列作为pandas.Series获得

如果仅在[]中指定列名(列标签),则将提取所选列并将其作为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。因为切片被视为行规范(请参见下文)。

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

也可以使用loc进行列切片。另外,如果使用iloc,则可以按列号而不是列名(列标签)指定。有关详细信息,请参见以下文章。

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获得

如果在[]中指定切片,则可以提取并获取相应范围内的多行作为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'>

可以指定一个负值或指定一个步骤,例如start:stop:step。您可以提取并获得奇数或偶数行。

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'>

如果它不是切片,则它是无用的;如果直接指定行号,则会发生错误。

# 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,则可以为一行单独指定行名和行号,并将其获取为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

标签名称:获取每种类型的单个元素的值

如果标签名称/编号是独立指定的,则可以按原样获得该值。如果是数字,则可以从末尾开始使用负值指定位置。 -1是结尾(最后一个)。

也可以在后面指定标签名称,就像pandas.DataFrame的列名称规范一样。但是,请注意,如果列名与现有方法名或属性名重叠,则将优先使用。

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'>

标签名称/编号列表:将单个或多个元素的值作为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'>

标签名称/数字切片:将单个元素或多个元素的值作为pandas.Series获得

在切片的情况下,可以将多个选定值作为pandas.Series获得。如果是标签名称的一部分,则还会选择停止线。

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'>

当选择一个元件,它变得与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

但是,这种重复索引引用([&hellip;])的方法称为链式索引,因此不建议使用,因为在为选择分配值时可能发生SettingWithCopyWarning。 &hellip;

可以使用at,iat,loc和iloc一次指定行和列。这是优选的。

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

行名/列名是整数值时的注意事项

在到目前为止的示例中,行名/列名是字符串,但是当行名/列名是整数值时要小心。

以下面的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

在[标量值]和[列表]的情况下,指定的值被视为列名。

print(df[0])# 2    20# 0    50# 1    80# Name: 0, dtype: int64print(df[[0, 2]])#     0   2# 2  20  10# 0  50  40# 1  80  70

对于“切片”,将指定的值视为行号,而不是行名。负值也可以使用。 打印(df [:2])

print(df[:2])#     1   2   0# 2   0  10  20# 0  30  40  50print(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  20print(df.iloc[:2])#     1   2   0# 2   0  10  20# 0  30  40  50s = df[2]print(s)# 2    10# 0    40# 1    70# Name: 2, dtype: int64

pandas.Series认为指定的值是标签名称而不是数字。

print(s[0])# 40

使用at和iat可以清楚地指定标签名称或编号。 loc和iloc很好,但是at和iat更快。

print(s.at[0])# 40print(s.iat[0])# 10

特别要注意的是,如果尝试获取最后一个值并尝试获取[-1],它将被视为对名为-1的标签的值的选择。确定,如果您使用iat。

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

这样,当行名和列名是整数值时,最好使用at,iat,loc和iloc以避免混淆。

到此,相信大家对“Pandas怎么通过index选择并获取行和列”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: Pandas怎么通过index选择并获取行和列

本文链接: https://www.lsjlt.com/news/349816.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Pandas通过index选择并获取行和列
    目录获取pandas.DataFrame的列列名称:将单个列作为pandas.Series获得列名称的列表:将单个或多个列作为pandas.DataFrame获得获取pandas.D...
    99+
    2023-02-23
    Pandas index获取行和列 Pandas 获取行列
  • Pandas怎么通过index选择并获取行和列
    本篇内容主要讲解“Pandas怎么通过index选择并获取行和列”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Pandas怎么通过index选择并获取行和列”吧!通过指定pandas.DataF...
    99+
    2023-07-05
  • Pandas中MultiIndex选择并提取任何行和列
    目录选择并提取带有loc的任何行或列特殊切片规范:slice(),pd.IndexSlice []xs方法给选择赋值使用多索引(分层索引)可以方便地对pandas.DataFrame...
    99+
    2023-02-23
    Pandas MultiIndex提取行列 Pandas 提取行列
  • Pandas中怎么使用MultiIndex选择并提取任何行和列
    这篇文章主要介绍“Pandas中怎么使用MultiIndex选择并提取任何行和列”,在日常操作中,相信很多人在Pandas中怎么使用MultiIndex选择并提取任何行和列问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对...
    99+
    2023-07-05
  • 怎么通过PHP程序获取一个10行10列的杨辉三角
    这篇文章给大家分享的是有关怎么通过PHP程序获取一个10行10列的杨辉三角的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。首先我们来了解一下杨辉三角。杨辉三角是牛顿二项式系数在三角形中的一种几何排列,它的每一个数都...
    99+
    2023-06-20
  • linux中怎么通过命令行获取gmail的新邮件
    本篇文章为大家展示了linux中怎么通过命令行获取gmail的新邮件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。linux下通过命令行获取gmail的新邮件,不需输入@gmail.com部分#!/...
    99+
    2023-06-09
  • jquery怎么通过AJAX从后台获取信息并显示在表格上
    本篇内容介绍了“jquery怎么通过AJAX从后台获取信息并显示在表格上”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能...
    99+
    2024-04-02
  • Java Integer怎么获取第一位和最后一位并进行截取
    这篇文章的内容主要围绕Java Integer怎么获取第一位和最后一位并进行截取进行讲述,文章内容清晰易懂,条理清晰,非常适合新手学习,值得大家去阅读。感兴趣的朋友可以跟随小编一起阅读吧。希望大家通过这篇文章有所收获!Intege...
    99+
    2023-06-29
  • JS和jQuery怎么通过this获取html标签中的属性值
    这篇文章主要介绍JS和jQuery怎么通过this获取html标签中的属性值,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!具体代码如下所示:<html>  &l...
    99+
    2024-04-02
  • ajax中怎么通过读取数据库内容实现二级联动下拉选择菜单
    ajax中怎么通过读取数据库内容实现二级联动下拉选择菜单,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。复制代码 代码如下:<PRE ...
    99+
    2024-04-02
  • 怎么使用C++和Direct3D获取屏幕截图并根据传入分辨率进行缩放图片大小
    这篇文章主要介绍“怎么使用C++和Direct3D获取屏幕截图并根据传入分辨率进行缩放图片大小”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“怎么使用C++和Direct3D获取屏幕截图并根据传入分辨...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作