Pandas DataFrame的多重索引 MultiIndex

这篇博客详细介绍了Pandas DataFrame的多级索引操作,包括创建、检索、层级更改、排序、汇总统计、轴向转换及转换单级索引等核心内容。通过实例演示了如何使用loc、xs等方法选择和提取数据,并探讨了reset_index在重置索引中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

@创建于:20210813
@修改于:20210813

1、Pandas进阶之DataFrame多级索引

一、创建多级索引
二、检索多级索引
三、更改索引的层级
四、多级索引的值排序(sort_index)
五、多级索引汇总统计
六、多级索引轴向转换
七、多级索引转换单级索引

2、DataFrame多重索引

1、多重索引
2、Series和DataFrame的转换
3、DataFrame重置索引

3、Python–MultiIndex多层次索引学习

入门级demo学习
MultiIndex创建的方式
多层索引操作:交换索引,索引排序,
索引堆叠、取消堆叠:Python–pandas–unstack() 与stack()
设置索引 Python-pandas–set_index与reset_index
重置索引 Python-pandas–set_index与reset_index

4、25_Pandas从MultiIndex中选择并提取任何行和列

选择并提取带有loc的任何行或列
xs方法
给选择赋值

### 处理三维数据的Pandas DataFrame 使用方法 #### 将三维 NumPy 数组转换为嵌套 Pandas DataFrame 为了将三维NumPy数组转换成可以被Pandas处理的形式,一种常见的方式是创建一个嵌套的数据框。这意味着每一行代表原始3D数组的一个切片,并且该切片本身作为另一个DataFrame存储在主DataFrame中的单元格内。 ```python import numpy as np import pandas as pd def array_to_nested_df(array_3d): """Converts a 3-dimensional numpy array into a nested pandas DataFrame.""" n_samples, height, width = array_3d.shape dataframes_list = [] for i in range(n_samples): sample_array = array_3d[i,:,:].flatten() temp_df = pd.DataFrame(sample_array.reshape(-1,height)) dataframes_list.append(temp_df) result_df = pd.concat(dataframes_list, keys=range(len(dataframes_list)), axis=0) return result_df.unstack(level=-1)[^1] array_example = np.random.rand(5,4,3) # 创建一个随机的三维数组用于测试 nested_dataframe = array_to_nested_df(array_example) print(nested_dataframe.head()) ``` 这种方法适用于当每个时间序列或其他类型的观测值集合作为代表单一样本的一整个矩阵时的情况。 #### 构建具有多重索引(MultiIndex) 的 Pandas DataFrame 来表示三维数据 另一种方式是以多层索引来表达第三维度的信息,这使得可以直接访问特定位置上的数值而无需解包更复杂的对象: ```python shape_x, shape_y, shape_z = (10, 10, 10) multi_indexed_data = np.arange(shape_x * shape_y * shape_z).reshape((shape_x, shape_y, shape_z)) arrays_for_mi = [ ['x_%d' % i]*shape_y*shape_z + list(range(shape_y))*shape_z + list(range(shape_z))* shape_x*shape_y, sum([[f'y_{j}' for _ in range(shape_z)]for j in range(shape_y)], []), [str(k) for k in range(shape_z)*shape_x*shape_y] ] df_with_multiindex = pd.DataFrame( multi_indexed_data.flatten(), index=pd.MultiIndex.from_arrays(arrays_for_mi), columns=['value'] )[^2] print(df_with_multiindex.head()) ``` 通过这种方式构建起来的数据帧允许更加直观地查询和操作基于三个不同轴向坐标的元素集合。 这两种方案都有效地解决了如何把三维结构映射到二维表的问题;具体选择哪一种取决于实际应用场景和个人偏好。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值