import pandas as pd
import pprint as p
# 嵌套列表
arrays = [['a', 'a', 'b', 'b'], [1, 2, 1, 2]]
# 创建 MultiIndex
index = pd.MultiIndex.from_arrays(arrays, names=('letter', 'number'))
# 使用 MultiIndex 创建 DataFrame
df = pd.DataFrame({'value': [10, 20, 30, 40]}, index=index)
p.pprint(df)
data = {
'letter': ['a', 'a', 'b', 'b'],
'number': [1, 2, 1, 2],
'value': [10, 20, 30, 40]
}
df = pd.DataFrame(data)
# 设置 MultiIndex
df = df.set_index(['letter', 'number'])
p.pprint(df)
print('交换索引层级')
# 交换索引层级
df_swapped = df.swaplevel('letter', 'number')
print(df_swapped)
# 按某一层级排序
print('按某一层级排序')
df_sorted = df.sort_index(level='number')
print(df_sorted)
# 创建一个更复杂的 DataFrame
arrays = [
['bar', 'bar', 'baz', 'baz', 'foo', 'foo', 'qux', 'qux'],
['one', 'two', 'one', 'two', 'one', 'two', 'one', 'two']
]
index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8], 'B': [10, 20, 30, 40, 50, 60, 70, 80]}, index=index)
p.pprint(df)
# 按层级选择数据
print('按层级选择数据')
print(df.loc['bar'])
print('bar+one')
print(df.loc[('bar', 'one')])
# 按层级进行统计分析
print('按层级进行统计分析')
print(df.groupby(level='first').sum())