Pandas index操作索引

1年前 (2024-04-27)
索引(index)是 Pandas 的重要工具,通过索引可以从 DataFame 中选择特定的行数和列数,这种选择数据的方式称为“子集选择”。

在 Pandas 中,索引值也被称为标签(label),它在 Jupyter 笔记本中以粗体字进行显示。索引可以加快数据访问的速度,它就好比数据的书签,通过它可以实现数据的快速查找。

创建索引

通过示例对 index 索引做进一步讲解。下面创建一个带有 index 索引的数据,并使用 read_csv() 这些读取数据:

import pandas as pd

data = pd.read_csv("person.csv")

print(data)

输出结果:

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

通过列索引(标签)读取多列数据。

import pandas as pd

#设置"Name"为行索引

data = pd.read_csv("person.csv", index_col ="Name")

# 通过列标签选取多列数据

a = data[["City","Salary"]]

print(a)

输出结果:

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")

#获取单列数据,或者以列表的形式传入["Salary"]

a =info["Salary"]

print(a)

输出结果:

Salary

Name

Jack 22000

Lida 19000

John 12000

Helen 3500

设置索引

set_index() 将已存在的列标签设置为 DataFrame 行索引。除了可以添加索引外,也可以替换已经存在的索引。比如您也可以把 Series 或者一个 DataFrme 设置成另一个 DataFrame 的索引。示例如下:

info = pd.DataFrame({'Name': ['Parker', 'Terry', 'Smith', 'William'], 'Year': [2011, 2009, 2014, 2010],

'Leaves': [10, 15, 9, 4]})

#设置Name为行索引

print(info.set_index('Name'))

输出结果:

Year Leaves

Name

Parker 2011 10

Terry 2009 15

Smith 2014 9

William 2010 4

重置索引

您可以使用 reset_index() 来恢复初始行索引,示例如下:

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())

输出结果:

重置前:

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