索引(index)是 Pandas 的重要工具,通過索引可以從 DataFame 中選擇特定的行數(shù)和列數(shù),這種選擇數(shù)據(jù)的方式稱為“子集選擇”。
在 Pandas 中,索引值也被稱為標(biāo)簽(label),它在 Jupyter 筆記本中以粗體字進(jìn)行顯示。索引可以加快數(shù)據(jù)訪問的速度,它就好比數(shù)據(jù)的書簽,通過它可以實(shí)現(xiàn)數(shù)據(jù)的快速查找。
通過示例對(duì) index 索引做進(jìn)一步講解。下面創(chuàng)建一個(gè)帶有 index 索引的數(shù)據(jù),并使用 read_csv() 這些讀取數(shù)據(jù):
import pandas as pd
data = pd.read_csv("person.csv")
print(data)
輸出結(jié)果:
ID Name Age City Salary 0 1 Jack 28 Beijing 22000 1 2 Lida 32 Shanghai 19000 2 3 John 43 Shenzhen 12000 3 4 Helen 38 Hengshui 3500
通過列索引(標(biāo)簽)讀取多列數(shù)據(jù)。
import pandas as pd
#設(shè)置"Name"為行索引
data = pd.read_csv("person.csv", index_col ="Name")
# 通過列標(biāo)簽選取多列數(shù)據(jù)
a = data[["City","Salary"]]
print(a)
輸出結(jié)果:
City Salary Name Jack Beijing 22000 Lida Shanghai 19000 John Shenzhen 12000 Helen Hengshui 3500
再看一組簡單的示例:
import pandas as pd
info =pd.read_csv("person.csv", index_col ="Name")
#獲取單列數(shù)據(jù),或者以列表的形式傳入["Salary"]
a =info["Salary"]
print(a)
輸出結(jié)果:
Salary Name Jack 22000 Lida 19000 John 12000 Helen 3500
set_index() 將已存在的列標(biāo)簽設(shè)置為 DataFrame 行索引。除了可以添加索引外,也可以替換已經(jīng)存在的索引。比如您也可以把 Series 或者一個(gè) DataFrme 設(shè)置成另一個(gè) DataFrame 的索引。示例如下:
info = pd.DataFrame({'Name': ['Parker', 'Terry', 'Smith', 'William'], 'Year': [2011, 2009, 2014, 2010],
'Leaves': [10, 15, 9, 4]})
#設(shè)置Name為行索引
print(info.set_index('Name'))
輸出結(jié)果:
Year Leaves Name Parker 2011 10 Terry 2009 15 Smith 2014 9 William 2010 4
您可以使用 reset_index() 來恢復(fù)初始行索引,示例如下:
import pandas as pd
import numpy as np
info = pd.DataFrame([('William', 'C'),
('Smith', 'Java'),
('Parker', 'Python'),
('Phill', np.nan)],
index=[1, 2, 3, 4],
columns=('name', 'Language'))
print(info)
print(info.reset_index())
輸出結(jié)果:
重置前: name Language 1 William C 2 Smith Java 3 Parker Python 4 Phill NaN 重置后: index name Language 0 1 William C 1 2 Smith Java 2 3 Parker Python 3 4 Phill NaN
更多建議: