如何在 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+ 瀏覽量

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告