Python Pandas – 设置多级索引中的单个特定新级别
在Python pandas数据框架中,设置多重索引是非常常见的。它允许您更好的组织并访问复杂的数据层次结构。本文将介绍如何在已有的多重索引中设置单个特定新级别。
什么是 Pandas 多级索引?
多级索引在Pandas库中也被称为分层索引,它通过在一个轴(Orientation)或多个轴上设置多个(两个或两个以上)索引级别来构建具有层次结构的数据结构。这种索引在分析和操作具有多个维度的数据(如时间序列)时非常实用。例如,多级索引可以在同一数据框中实现不同的时间序列数据和特征,并提供快速的子集选择和多索引级别的操作。
例如以下 Pandas 数据框:
data = {'year': ['2010','2010','2011','2011'],
'fruit': ['apple','orange','apple','orange'],
'production': [230, 100, 210, 190]}
df = pd.DataFrame(data)
输出:
year fruit production
0 2010 apple 230
1 2010 orange 100
2 2011 apple 210
3 2011 orange 190
我们可以使用set_index方法将其中两列设为多级索引:
df.set_index(['year','fruit'], inplace=True)
输出:
production
year fruit
2010 apple 230
orange 100
2011 apple 210
orange 190
此时,’year’和’fruit’被设置为两级多重索引。现在我们可以使用这些多重索引来访问特定数据。
如何设置单个特定新级别?
我们可以使用Pandas方法reorder_levels()函数来调整已有的多级索引中每个级别的顺序。此外,我们还可以使用multiindex的set_levels()函数来设置当前层级别的新唯一值。创建一个DataFrame并添加多级索引:
import pandas as pd
data = {'state': ['Texas','Texas','New York','New York'],
'city': ['Houston','Dallas','New York City','Buffalo'],
'temperature': [30,25,20,15]}
df = pd.DataFrame(data)
df = df.set_index(['state','city'])
print(df)
输出:
temperature
state city
Texas Houston 30
Dallas 25
New York New York City 20
Buffalo 15
为了添加一个全新的索引级别,我们可以使用Pandas MultiIndex类的构造函数或Pandas Series和DataFrame的from_product()方法来创建额外的索引级别。接下来,让我们使用MultiIndex构造函数来添加新的索引标签值:
new_labels = ['North Region','South Region','West Region','East Region']
multi_index = pd.MultiIndex.from_product([new_labels, df.index.levels[0]])
df_new = pd.DataFrame(df.values, index=df.index.set_levels(multi_index, level=0), columns=df.columns)
print(df_new)
输出:
*注:因为数据没有实际意义,因此结果仅用作示例。
temperature
level_0 level_1
North Region Texas 30
New York 20
South Region Texas 25
New York 15
West Region Texas 30
New York 20
East Region Texas 25
New York 15
让我们看看我们所作的更改。在最终的输出中,我们可以看到一个新的索引级别在顶部,并将原来的索引下推一级。
结论
本文介绍了如何设置Pandas DataFrame中的单个特定新级别,如何使用多级索引构建数据的层次结构,并对于已有的多级索引如何重新排列和设置新唯一值。通过掌握多级索引的操作,您可以更加灵活地处理和组织具有多个维度的数据。希望本文可以帮助您更好地了解 Pandas 多级索引的应用。
极客笔记