69_Pandas.DataFrame获取行号和列号

这篇具有很好参考价值的文章主要介绍了69_Pandas.DataFrame获取行号和列号。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

69_Pandas.DataFrame获取行号和列号

将讲解如何从pandas.DataFrame的行名和列名中获取行号和列号,以及如何从列元素的值中获取行名和行号。
下面对内容进行说明。

  • 根据行名和列名获取行号和列号
    • get_loc() 方法
      • 当行名和列名重复时
    • 列表索引、列
  • 从列元素值获取行名称和行号

如果想从行号或列号中获取行、列或元素的值,请参考下面的文章。

  • 04_Pandas获取和修改任意位置的值(at,iat,loc,iloc)
  • 28_Pandas通过index选择并获取行和列

以下面的 pandas.DataFrame 为例。

import pandas as pd

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

根据行名和列名获取行号和列号

get_loc() 方法

有一个名为 get_loc() 的方法用于获取 pandas.DataFrame 的索引和列。

如果指定行名或列名作为参数,则将返回行号和列号。行号和列号都是从0开始的整数。 行号是从索引中获取的。

print(df.index.get_loc('Alice'))
# 0

print(df.index.get_loc('Ellen'))
# 4

列号是从列中获得的。

print(df.columns.get_loc('age'))
# 0

print(df.columns.get_loc('point'))
# 2

无论哪种情况,对于不存在的名称都会发生 KeyError 错误。

# print(df.index.get_loc('XXX'))
# KeyError: 'XXX'

# print(df.columns.get_loc('XXX'))
# KeyError: 'XXX'

当行名和列名重复时

如果行名或列名重复,请小心。以下示例使用重复的行名称,但这同样适用于列名称。 使用 rename() 方法更改行名称并准备重复的行名称。

  • 01_Pandas.DataFrame的行名和列名的修改
df_dup = df.rename(index={'Charlie': 'Bob'})
print(df_dup)
#        age state  point
# name                   
# Alice   24    NY     64
# Bob     42    CA     92
# Bob     18    CA     70
# Dave    68    TX     70
# Ellen   24    CA     88
# Frank   30    NY     57

在这种情况下,get_loc()方法返回一个切片类型对象而不是行号。

print(df_dup.index.get_loc('Bob'))
# slice(1, 3, None)

print(type(df_dup.index.get_loc('Bob')))
# <class 'slice'>

添加更多重复的行名称。

df_dup.rename(index={'Ellen': 'Bob'}, inplace=True)
print(df_dup)
#        age state  point
# name                   
# Alice   24    NY     64
# Bob     42    CA     92
# Bob     18    CA     70
# Dave    68    TX     70
# Bob     24    CA     88
# Frank   30    NY     57

如果无法用切片表示,则它将是 bool 类型的 NumPy 数组 numpy.ndarray。

print(df_dup.index.get_loc('Bob'))
# [False  True  True False  True False]

print(type(df_dup.index.get_loc('Bob')))
# <class 'numpy.ndarray'>

slice 对象和 bool 类型数组都可以用于索引引用和 iloc 定位。 bool 类型数组也可以与 loc 一起使用。

  • 04_Pandas获取和修改任意位置的值(at,iat,loc,iloc)
  • 28_Pandas通过index选择并获取行和列
print(df_dup[df_dup.index.get_loc('Bob')])
#       age state  point
# name                  
# Bob    42    CA     92
# Bob    18    CA     70
# Bob    24    CA     88

print(df_dup.iloc[df_dup.index.get_loc('Bob'), 0])
# name
# Bob    42
# Bob    18
# Bob    24
# Name: age, dtype: int64

注意,对于索引,可以使用query()方法提取元素,而不需要使用get_loc()获取切片对象或bool类型数组。

print(df_dup.query('index == "Bob"'))
#       age state  point
# name                  
# Bob    42    CA     92
# Bob    18    CA     70
# Bob    24    CA     88

即使行名和列名重复,如果您想要获取行号和列号而不是切片对象或 bool 类型数组,请按如下所述列出索引和列。

列表索引、列

索引和列可以使用list()转换为标准Python列表(列表类型对象)。

l_index = list(df.index)
print(l_index)
# ['Alice', 'Bob', 'Charlie', 'Dave', 'Ellen', 'Frank']

print(type(l_index))
# <class 'list'>

l_columns = list(df.columns)
print(l_columns)
# ['age', 'state', 'point']

print(type(l_columns))
# <class 'list'>

可以使用列表的 index() 方法获取索引(元素数量)。

print(l_index.index('Bob'))
# 1

如果行名称重复,您可以使用内置函数 enumerate() 和列表理解来获取索引列表。

l_index_dup = list(df_dup.index)
print(l_index_dup)
# ['Alice', 'Bob', 'Bob', 'Dave', 'Bob', 'Frank']

print([i for i, x in enumerate(l_index_dup) if x == 'Bob'])
# [1, 2, 4]

从列元素值获取行名称和行号

我们不会从行名和列名中获取行号和列号,而是向您展示如何从任意列的元素中获取相应的行名和行号。 继续使用下面的 pandas.DataFrame 作为示例。

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

可以使用 query() 方法根据任何列中元素的条件提取行。返回值是pandas.DataFrame。

print(df.query('state == "CA"'))
#          age state  point
# name                     
# Bob       42    CA     92
# Charlie   18    CA     70
# Ellen     24    CA     88

通过列出使用 query() 提取的 pandas.DataFrame 的索引,可以获得特定值的行名称列表。

print(list(df.query('state == "CA"').index))
# ['Bob', 'Charlie', 'Ellen']

如果仅提取一行,则同样适用。如果您想要行名称值而不是列表,只需获取索引的第一个元素 [0] 即可。

print(df.query('state == "TX"'))
#       age state  point
# name                  
# Dave   68    TX     70

print(list(df.query('state == "TX"').index))
# ['Dave']

print(df.query('state == "TX"').index[0])
# Dave

如果想获取行号而不是行名,请使用reset_index()将索引重置为从0开始的连续数字,然后执行相同的过程。文章来源地址https://www.toymoban.com/news/detail-790765.html

  • 21_Pandas.DataFrame,重置Series的索引index(reset_index)
print(df.reset_index())
#       name  age state  point
# 0    Alice   24    NY     64
# 1      Bob   42    CA     92
# 2  Charlie   18    CA     70
# 3     Dave   68    TX     70
# 4    Ellen   24    CA     88
# 5    Frank   30    NY     57

print(list(df.reset_index().query('state == "CA"').index))
# [1, 2, 4]

print(list(df.reset_index().query('state == "TX"').index))
# [3]

print(df.reset_index().query('state == "TX"').index[0])
# 3

到了这里,关于69_Pandas.DataFrame获取行号和列号的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 有一个m行n列的矩阵,编程求出其中值最大的那个元素,以及其所在的行号和列号。

    【题目描述】 有一个m行n列的矩阵,编程求出其中值最大的那个元素,以及其所在的行号和列号。(如果最大数有多个,则显示第一个出现的数据的信息)。 【输入】 有多行。第1行是两个整数,m(m≤10)和n(n≤10),分别表示矩阵有m行n列。接下来是m行整数,每行n个整数

    2024年02月12日
    浏览(37)
  • 有一个m×n的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。​​​​​​​

    【问题描述】 有一个m×n的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。 【算法代码】  

    2024年02月12日
    浏览(10)
  • python中Pandas之DataFrame索引、选取数据

    总结一下 DataFrame 索引问题 先创建一个简单的 DataFrame 。 DataFrame 中有两种索引: 行索引( index ):对应最左边那一竖列 列索引( columns ):对应最上面那一横行 两种索引默认均为从 0 开始的自增整数。 可以使用 index 这个参数指定行索引, columns 这个参数指定列索引。 输出此时

    2023年04月08日
    浏览(6)
  • 【pandas】Python读取DataFrame的某行或某列

    【pandas】Python读取DataFrame的某行或某列

    行索引(index) :对应最左边那一竖列 列索引(columns) :对应最上面那一横行 .loc[]官方释义: Access a group of rows and columns by label(s) or a boolean array.(通过标签或布尔数组访问一组行和列) 官方链接 loc使用索引来取值,基础用法 df.loc[[行索引],[列索引]] .iloc[]官方释义: Purely inte

    2024年02月08日
    浏览(10)
  • 【python】【pandas】dataframe按照列名给列排序

    输出结果: 在上述代码中,我们首先创建了一个示例DataFrame。然后,我们使用 sort_values() 方法对DataFrame的列进行排序。通过指定 by=df.columns ,我们将按照列名的字母顺序对列进行排序。最后,通过设置 axis=1 参数,我们指定按列进行排序。 执行上述代码后,DataFrame的列将按照

    2024年02月15日
    浏览(12)
  • 【Python】【pandas】打印 DataFrame 的每一列数据类型。

    可以使用 dtypes 属性来打印 DataFrame 的每一列数据类型。 dtypes 属性返回一个 Series,其中包含每个列的名称和对应的数据类型。 以下是打印 DataFrame 每一列数据类型的示例代码: 这将输出一个包含列名和数据类型的 Series。每一行都代表 DataFrame 的一列,列名作为索引,数据类

    2024年02月14日
    浏览(8)
  • 【python】【pandas】读取DataFrame的某一列形成一个列表

    输出结果: 在上述代码中,我们创建了一个示例DataFrame df ,其中包含三列(\\\'A\\\'、\\\'B\\\'、\\\'C\\\'),每列都有一些示例值。 然后,我们使用 df.iloc[:, 1] 来访问DataFrame的第一列。这里的 iloc[:, 1] 表示选择所有行(使用 : ),并选择索引为1的列(即第二列)。 接下来,我们使用 tolist

    2024年02月11日
    浏览(10)
  • 【python】pandas-DataFrame类型数据重命名列表头

    【python】pandas-DataFrame类型数据重命名列表头

    目录 0.环境 1.将DataFrame类型数据某一列重命名 windows + jupyter notebook + python  使用场景: 在处理数据对齐的问题时,两个表格的对齐列名不相同(一个数据集是DataFrame类型,一个数据集是geopandas类型),所以想修改一下DataFrame类型数据的某一列名字,特此记录分享 1)重命名前

    2024年02月14日
    浏览(16)
  • Python中Pandas库提供的函数——pd.DataFrame的基本用法

    pd.DataFrame 是 Pandas 库中的一个类,用于创建和操作数据框(DataFrame)。DataFrame 是 Pandas 的核心数据结构,用于以表格形式和处理数据,类似提供电子表格或数据库表格。类了创建 pd.DataFrame 数据框、访问数据、进行数据操作和分析的方法和属性。 表格形式 :DataFrame是一个二维

    2024年02月05日
    浏览(15)
  • Python 之 Pandas DataFrame 数据类型的简介、创建的列操作

    Python 之 Pandas DataFrame 数据类型的简介、创建的列操作

    DataFrame 是 Pandas 的重要数据结构之一,也是在使用 Pandas 进行数据分析过程中最常用的结构之一,可以这么说,掌握了 DataFrame 的用法,你就拥有了学习数据分析的基本能力。 DataFrame 是一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表

    2024年02月06日
    浏览(12)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包