约定
import pandas as pd from pandas import DataFrame import numpy as np
MultiIndex
MultiIndex表示多级索引,它是从Index继承过来的,其中多级标签用元组对象来表示。
一、创建MultiIndex对象
创建方式一:元组列表
m_index1=pd.Index([("A","x1"),("A","x2"),("B","y1"),("B","y2"),("B","y3")],name=["class1","class2"]) m_index1
代码结果:
MultiIndex(levels=[['A', 'B'], ['x1', 'x2', 'y1', 'y2', 'y3']], labels=[[0, 0, 1, 1, 1], [0, 1, 2, 3, 4]], names=['class1', 'class2'])
df1=DataFrame(np.random.randint(1,10,(5,3)),index=m_index1) df1
代码结果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 7 | 4 | 8 |
x2 | 4 | 5 | 2 | |
B | y1 | 6 | 9 | 7 |
y2 | 2 | 1 | 6 | |
y3 | 6 | 8 | 6 |
创建方式二:特定结构
例如**from_arrays()
class1=["A","A","B","B"] class2=["x1","x2","y1","y2"] m_index2=pd.MultiIndex.from_arrays([class1,class2],names=["class1","class2"]) m_index2
代码结果:
MultiIndex(levels=[['A', 'B'], ['x1', 'x2', 'y1', 'y2']], labels=[[0, 0, 1, 1], [0, 1, 2, 3]], names=['class1', 'class2'])
df2=DataFrame(np.random.randint(1,10,(4,3)),index=m_index2) df2
代码结果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 2 | 4 | 5 |
x2 | 3 | 5 | 9 | |
B | y1 | 7 | 1 | 2 |
y2 | 3 | 1 | 8 |
创建方式三:笛卡尔积
from_product()从多个集合的笛卡尔积创建MultiIndex对象。
m_index3=pd.MultiIndex.from_product([["A","B"],['x1','y1']],names=["class1","class2"]) m_index3
代码结果:
MultiIndex(levels=[['A', 'B'], ['x1', 'y1']], labels=[[0, 0, 1, 1], [0, 1, 0, 1]], names=['class1', 'class2'])
df3=DataFrame(np.random.randint(1,10,(2,4)),columns=m_index3) df3
代码结果:
class1 | A | B | ||
---|---|---|---|---|
class2 | x1 | y1 | x1 | y1 |
0 | 2 | 9 | 1 | 8 |
1 | 5 | 2 | 5 | 2 |
二、MultiIndex对象属性
df1
代码结果:
0 | 1 | 2 | ||
---|---|---|---|---|
class1 | class2 | |||
A | x1 | 7 | 4 | 8 |
x2 | 4 | 5 | 2 | |
B | y1 | 6 | 9 | 7 |
y2 | 2 | 1 | 6 | |
y3 | 6 | 8 | 6 |
m_index4=df1.index print(in1[0])
代码结果:
('A', 'x1')
调用.get_loc()和.get_indexer()获取标签的下标:
print(m_index4.get_loc(("A","x2"))) print(m_index4.get_indexer([("A","x2"),("B","y1"),"nothing"]))
代码结果:
1
[ 1 2 -1]
MultiIndex对象使用多个Index对象保存索引中每一级的标签:
print(m_index4.levels[0]) print(m_index4.levels[1])
代码结果:
Index(['A', 'B'], dtype='object', name='class1') Index(['x1', 'x2', 'y1', 'y2', 'y3'], dtype='object', name='class2')
MultiIndex对象还有属性labels保存标签的下标:
print(m_index4.labels[0]) print(m_index4.labels[1])
代码结果:
FrozenNDArray([0, 0, 1, 1, 1], dtype='int8') FrozenNDArray([0, 1, 2, 3, 4], dtype='int8')
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持小牛知识库。
本文向大家介绍对Pandas MultiIndex(多重索引)详解,包括了对Pandas MultiIndex(多重索引)详解的使用技巧和注意事项,需要的朋友参考一下 创建多重索引 获得索引信息 get_level_values 基本索引 使用reindex对齐数据 数据准备 s序列加(0~-2)索引的值,因为s[:-2]没有最后两个的索引,所以为NaN.s[::2]意思是步长为1. 以上这篇对P
问题内容: 我通过使用另一个数据框创建了一个具有MultiIndex的数据框: 如文档http://pandas.pydata.org/pandas- docs/stable/advanced.html中 所述,此方法运行良好。 在文档中,该文档还说,在“需要使用MultiIndex进行排序”下,需要对标签进行排序以正确进行索引和切片功能。 但是不知何故 要么 不再起作用,并抛出 TypeErro
本文向大家介绍iOS关联对象示例详解,包括了iOS关联对象示例详解的使用技巧和注意事项,需要的朋友参考一下 背景 在iOS开发中如果我们想给一个对象动态添加属性或者给category添加属性的时候,都是通过runtime的关联对象去实现,那我们添加的属性到底是如何存取的呢?是直接添加到了对象自身的内存中了去吗?带着这些疑问让我们看一runtime的源码,解开关联对象的神秘面纱。 关联对象源码 存值
本文向大家介绍SpringCloud之Feign示例详解,包括了SpringCloud之Feign示例详解的使用技巧和注意事项,需要的朋友参考一下 Feign简介 Feign 是一个声明web服务客户端,这便得编写web服务客户端更容易,使用Feign 创建一个接口并对它进行注解,它具有可插拔的注解支持包括Feign注解与JAX-RS注解,Feign还支持可插拔的编码器与解码器,Spring Cl
本文向大家介绍ES6的循环与可迭代对象示例详解,包括了ES6的循环与可迭代对象示例详解的使用技巧和注意事项,需要的朋友参考一下 本文将研究 ES6 的 for ... of 循环。 旧方法 在过去,有两种方法可以遍历 javascript。 首先是经典的 for i 循环,它使你可以遍历数组或可索引的且有 length 属性的任何对象。 其次是 for ... in 循环,用于循环一个对象的键/值
问题内容: 可以说我有一个DataFrame如下: 我想创建一个新的DataFrame像这样: 可能的代码是什么? 问题答案: 1.使用Python 3.6+更新,使用带有列表理解功能的f字符串格式: 2.使用和: 3.如果您的列具有数字数据类型,请使用和: 输出: