Pandas 如何在数据帧中获取行/索引名称
Pandas是一个广泛使用的Python库,用于数据操作和分析。它提供了一套高效的工具,用于处理结构化数据,包括数据处理、清理、可视化和其他功能。处理表格数据,即按行和列组织的数据,是Pandas的主要特点之一。Pandas DataFrame中的每一行和列都有一个标签或名称分配给它,因此可以简单地引用某些行和列。在这种情况下,术语“索引”通常用来描述行标签或名称,而“列名”用来描述列标签或名称。
Pandas DataFrames中获取行名称是一个常见的功能。数据过滤、连接和分组等功能都可以受益于此。当使用从其他源导入的数据,比如CSV文件或数据库时,知道行名称也可能很有用。在这方面,Pandas有一系列的技术,包括index属性、reset_index()方法和set_index()方法,用于访问和修改行名称。这些技术使得更改行名称以适应某些要求,如重命名或重新排列行,变得简单。
方法
使用’index’、’df.index.values’和’df.axes’等属性
- 创建一个Pandas Dataframe
- 获取行名称
- 打印行名称
- 可选地使用’tolist()’函数将索引对象转换为列表
- 打印行名称列表
使用For循环
- 创建一个Pandas Dataframe
- 使用’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’属性,它返回一个由数据框的行和列索引组成的列表,我们可以通过将索引设置为[0]来访问第一个元素或行索引。然后,我们可以通过‘tolist’函数将结果转换为列表。‘df.axes’函数在需要一次性访问数据框的行和列索引的情况下非常有用。接下来,我们将使用‘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) 的DataFrame,将其赋值给变量df。然后使用index属性检索DataFrame的行/索引名称,并使用tolist()函数将其转换成列表。为了获得每个学生的平均分数,它遍历行名称列表,并使用行的mean()函数计算平均分数。
考虑以下情境:我们希望使用一个包含学生测试成绩的DataFrame来计算每个学生的平均分数。可以通过行名称识别每个学生的分数,然后计算他们的平均分数。以下是如何做到这一点的方法−
示例
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中行名的几种主要技术。这些技术可以根据特定的用例进行定制,例如计算班级中每个学生的平均成绩。