如何在 Pandas 数据框中获取行/索引名称?


Pandas 是一个非常广泛使用的 Python 库,用于数据操作和分析。它提供了一套高效的工具来处理结构化数据,包括数据整理、清洗、可视化和其他功能的支持。处理表格数据(即组织成行和列的数据)是 Pandas 的主要功能之一。Pandas DataFrame 中的每一行和每一列都分配有一个标签或名称,这使得轻松引用特定的行和列成为可能。在这种情况下,术语“索引”通常用于描述行标签或名称,而“列名”用于描述列标签或名称。

在使用 Pandas 数据框时获取行名称是一种常见的功能。数据过滤、连接和分组等功能都可以从获取行名称中受益。当处理从其他来源(如 CSV 文件或数据库)导入的数据时,了解行名称也可能很有用。在这方面,Pandas 提供了一系列技术,包括 index 属性、reset_index() 方法和 set_index() 方法,用于访问和修改行名称。这些技术使轻松更改行名称以满足特定需求(如重命名或重新排列行)成为可能。

算法

使用诸如 'index'、'df.index.values' 和 'df.axes' 等属性

  • 创建一个 Pandas 数据框

  • 获取行名称

  • 打印行名称

  • 可选地使用 'tolist()' 函数将索引对象转换为列表

  • 打印行名称列表

使用 For 循环

  • 创建一个 Pandas 数据框

  • 使用 'index' 属性获取行名称

  • 循环遍历行名称并打印它们

  • 可选地使用 'tolist()' 方法将索引对象转换为列表

  • 循环遍历行名称列表并打印它们

方法

  • 使用 'index' 属性

  • 使用 'df.index.values' 属性

  • 使用 'df.axes' 属性

  • 使用 for 循环

方法 1:使用 'index' 属性

将 Pandas 库导入为 pd。使用 'pd.DataFrame()' 函数创建一个名为 'df' 的数据框。使用 'index' 函数将行名称存储在 'row_names' 变量中,并使用 'print()' 函数打印它们。我们可以在此处停止,但 'index' 属性将名称作为对象返回,这意味着它包含字符串值。如果我们希望行名称显示为列表,我们可以使用 'tolist()' 函数转换它们并打印它们。

示例

import pandas as pd

# create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}, index=['X', 'Y', 'Z'])

# get the row names
row_names = df.index

print(row_names)

# convert the row names into list
row_names_list = df.index.tolist()

print(row_names_list)

输出

Index(['X', 'Y', 'Z'], dtype='object')
['X', 'Y', 'Z']

方法 2:使用 'df.index.values' 属性

将 Pandas 库导入为 pd。使用 'pd.DataFrame()' 函数创建一个名为 'df' 的数据框。在这里,我们获取了行名称并在同一行中将其转换为列表。我们已将它们存储在名为 'row_names' 的变量中。然后我们打印了行名称。

示例

import pandas as pd

# create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}, index=['row1', 'row2', 'row3'])

# get the row names
row_names = df.index.values.tolist()

# print the row names
print(row_names)

输出

['row1', 'row2', 'row3']

方法 3:使用 'df.axes' 属性

将 Pandas 库导入为 pd。使用 'pd.DataFrame()' 函数创建一个名为 'df' 的数据框。在这里,我们使用了 'df.axes' 属性,它返回 DataFrame 的行和列轴的列表,我们可以通过将索引设置为 [0] 来访问第一个元素或行轴。然后,我们可以通过 'tolist' 函数将结果 Pandas Index 对象转换为列表。'df.axes' 函数在我们需要一步访问 DataFrame 的行和列轴的情况下很有用。然后,我们将使用 'print()' 函数打印行名称。

示例

import pandas as pd

# create a DataFrame
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6], 'C': [7, 8, 9]}, index=['row1', 'row2', 'row3'])

# get the row names
row_names = df.axes[0].tolist()

# print the row names
print(row_names)

输出

['row1', 'row2', 'row3']

方法 4:使用 For 循环

将 Pandas 库导入为 pd。使用 'pd.DataFrame()' 函数创建一个名为 'df' 的数据框。在这里,我们只是使用了 'index' 属性来获取行名称并将它们存储在 'row_name' 变量中。然后,我们使用 for 循环逐个打印每一行的名称。我们不需要在这里使用 'tolist' 方法,因为它无论如何都会逐个打印名称。

示例

import pandas as pd

# create a DataFrame
df = pd.DataFrame({'name': ['Alice', 'Bob', 'Charlie'], 'age': [25, 30, 35]},  
         index=['row1', 'row2', 'row3'])

# get the row names
row_names = df.index

# print the row names 
for row_name in row_names:
  print(row_name)

输出

row1
row2
row3

现实世界应用

创建了一个包含三行(Alice、Bob 和 Charlie)和三列(test1、test2 和 test3)的数据框,并将其分配给变量 df。然后,它使用 index 属性检索 DataFrame 的行/索引名称,然后使用 tolist() 函数将其转换为列表。为了获取每个学生的平均分数,它使用行的 mean() 函数遍历行名称列表。

假设我们希望使用包含学生考试结果的数据框来获取班级中每个学生的平均分数。每个学生的分数可以通过其行名称来识别,然后我们可以计算其平均分数。以下是操作方法:

示例

import pandas as pd

# Create a DataFrame with test scores
df = pd.DataFrame({'test1': [85, 90, 95], 'test2': [80, 85, 90], 'test3': [75, 80, 85]}, index=['Alice', 'Bob', 'Charlie'])

# Get the row names of the DataFrame
students = df.index.tolist()

# Compute the average score for each student
for student in students:
   avg_score = df.loc[student].mean()
   print(f"{student}: {avg_score}")

输出

Alice: 80.0
Bob: 85.0
Charlie: 90.0

结论

总之,Pandas 提供了强大的 Python 工具来处理结构化数据,包括能够快速提取和修改 DataFrame 的行名称。任何使用 Pandas 处理数据的人都必须知道如何访问和处理行标签,因为它使数据操作和分析更加有效。

访问 'index'、'index.values' 和 'df.axes' 属性以及在 for 循环中迭代行名称是获取 Pandas DataFrame 中行名称的一些主要技术。这些技术可以根据特定用例进行定制,例如计算班级中每个学生的平均成绩。

更新于: 2023-07-24

8K+ 浏览量

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告