在Pandas中,多级索引(MultiIndex)数据帧是一种强大的数据结构,它允许你在行或列上拥有多个层次的索引。以下是如何创建、访问和操作多级索引数据帧的一些基本步骤:
MultiIndex.from_tuples
或MultiIndex.from_arrays
创建多级索引:import pandas as pd
# 创建多级索引
arrays = [
['A', 'A', 'B', 'B'],
['one', 'two', 'one', 'two']
]
index = pd.MultiIndex.from_arrays(arrays, names=('first', 'second'))
# 创建数据帧
df = pd.DataFrame({'value': [10, 20, 30, 40]}, index=index)
print(df)
输出:
value
first second
A one 10
two 20
B one 30
two 40
df = pd.DataFrame({
('A', 'one'): [10],
('A', 'two'): [20],
('B', 'one'): [30],
('B', 'two'): [40]
}, index=[0])
# 设置多级索引
df.columns = pd.MultiIndex.from_tuples(df.columns, names=['letter', 'number'])
print(df)
print(df.loc[(slice(None), 'one'), :])
xs
方法跨级访问:print(df.xs('A', level='first'))
loc
和iloc
结合多级索引访问:print(df.loc[('A', 'one'), :])
df.sort_index(inplace=True)
df.swaplevel('first', 'second', axis=0).sort_index()
df.reset_index(inplace=True)
df.droplevel('second')
以下是一个完整的示例,展示了如何创建、访问和操作多级索引数据帧:
import pandas as pd
# 创建多级索引数据帧
arrays = [
['A', 'A', 'B', 'B'],
['one', 'two', 'one', 'two']
]
index = pd.MultiIndex.from_arrays(arrays, names=('first', 'second'))
df = pd.DataFrame({'value': [10, 20, 30, 40]}, index=index)
# 访问数据
print("Accessing specific cell:")
print(df.loc[(slice(None), 'one'), :])
print("\nCross-level access:")
print(df.xs('A', level='first'))
print("\nAccessing with loc:")
print(df.loc[('A', 'one'), :])
# 操作数据
print("\nSorting index:")
df.sort_index(inplace=True)
print(df)
print("\nSwapping levels:")
print(df.swaplevel('first', 'second', axis=0).sort_index())
print("\nResetting index:")
df.reset_index(inplace=True)
print(df)
print("\nDropping a level:")
df.droplevel('second')
print(df)
通过这些步骤,你可以有效地管理和操作具有多级索引的数据帧。
领取专属 10元无门槛券
手把手带您无忧上云