Pandas 如何使用索引迭代多级索引的数据框

Pandas 如何使用索引迭代多级索引的数据框

在本文中,我们将介绍如何使用Pandas迭代多级索引的数据框。Pandas是一个强大的数据分析工具,可以处理各种数据格式,包括CSV、Excel、SQL等。其中,MultiIndex是Pandas中的一种索引类型,也称为层次化索引,将数据分层次组织,方便数据分析。

阅读更多:Pandas 教程

什么是MultiIndex

MultiIndex是一种Pandas数据框的索引类型,也称为层次化索引,在数据分析过程中非常有用。与单层索引不同,MultiIndex具有多层次的索引结构,能够更好地组织分析数据。

例如,在以下数据集中,每个样本都有姓名和城市两个维度,我们使用MultiIndex将其变成二级索引结构。

import pandas as pd

data = {
    ('Tom', 'Beijing'): [30, 150],
    ('Tom', 'Shanghai'): [40, 160],
    ('Jerry', 'Beijing'): [50, 170],
    ('Jerry', 'Shanghai'): [60, 180]
}

df = pd.DataFrame.from_dict(data, orient='index')
df.index.names = ['Name', 'City']
df.columns = ['Age', 'Height']
df
Python

输出结果如下:

|            | Age | Height |
|:----------|----:|-------:|
| (Tom, Beijing)   |  30 |    150 |
| (Tom, Shanghai)  |  40 |    160 |
| (Jerry, Beijing) |  50 |    170 |
| (Jerry, Shanghai)|  60 |    180 |

在上面的数据集中,我们使用元组(x, y)作为层次化索引。第一层是Name,第二层是City。Pandas可以方便地对多级索引进行筛选、查询和分析数据。

MultiIndex迭代

在多维索引结构下,我们需要使用多重迭代方式来访问数据。Pandas提供了一些方法来迭代MultiIndex数据框。

我们以上面的数据框为例,分别演示如何使用level和items两个方法进行多级索引迭代。

level方法迭代

使用level方法可以指定需要迭代的层次,返回一个Series对象。具体使用如下:

for name, group in df.groupby(level=0):
    print(f"Name: {name}")
    print(group)
Python

输出结果如下:

Name: Jerry

|            | Age | Height |
|:----------|----:|-------:|
| (Jerry, Beijing) |  50 |    170 |
| (Jerry, Shanghai)|  60 |    180 |

Name: Tom

|            | Age | Height |
|:----------|----:|-------:|
| (Tom, Beijing)   |  30 |    150 |
| (Tom, Shanghai)  |  40 |    160 |

在上面的代码中,我们使用groupby(level=0)对第一层索引进行分组,然后遍历组名name和组数据group。group是一个数据框,它包含了所有第一层索引为name的数据。

items方法迭代

使用items方法可以将多级索引分解为单层索引,返回一个包含元组的列表。具体使用如下:

for (name1, name2), values in df.groupby(df.index.levels[0]):
    print(f"Name: {name1}")
    print(f"City: {name2}")
    print(values)
Python

输出结果如下:

Name: Jerry
City: Beijing

|            | Age | Height |
|:----------|----:|-------:|
| (Jerry, Beijing) |  50 |    170 |

Name: Jerry
City: Shanghai

|            | Age | Height |
|:----------|----:|-------:|
| (Jerry, Shanghai)|60 | 180 |

Name: Tom
City: Beijing

|            | Age | Height |
|:----------|----:|-------:|
| (Tom, Beijing)   |  30 |    150 |

Name: Tom
City: Shanghai

|            | Age | Height |
|:----------|----:|-------:|
| (Tom, Shanghai)  |  40 |    160 |

在上面的代码中,我们使用groupby(df.index.levels[0])对第一层索引进行分组,然后使用元组(name1, name2)访问第一层和第二层索引。values是一个数据框,它包含了所有第一层索引为name1、第二层索引为name2的数据。

总结

本文介绍了Pandas中的MultiIndex索引类型和如何迭代多级索引的数据框。使用level和items方法可以方便地遍历相应层次的索引数据。MultiIndex不仅可以更好地组织和分析数据,还可以提高代码的可读性和可维护性。希望本文能对读者有所帮助。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册