stack直译过来是堆叠,堆积,unstack是展开,解释为把列索引和行索引的互换,如下图所示,stack用于把列索引转换为行索引,而unstack用于把行索引转换为列索引。因此,可以把stack和unstack的功能解释为行索引和列索引的互换。 stack和unstack作用的对象是索引,pandas有多级索引(MultiIndex)结构,通过把列索引转换为行索引,那么...
type(df3) pandas.core.frame.DataFrame df3.index Index(['小明', '小红'], dtype='object') df3.columns MultiIndex([('information', 'sex'), ('information', 'weight')],) 看下stack之后的数据:二者比较 对比下原数据和生成的新数据:
df.columns = [['文科','文科','理科','理科'],['语文','英语','数学','物理']] df.columns.names=['文理','科目'] 生成的DataFrame在行和列方向都是MultiIndex: 文理 文科 理科 科目 语文 英语 数学 物理 班级 学生 1 张三 70 75 75 45 李四80 85 85 55 王五90 95 95 65 2 刘六 20 35 ...
多维索引也可以设置名称(names),属性的值为一维数组,元素的个数需要与索引的层数相同(每层索引都需要具有一个名称)。 1.2.第二种:MultiIndex 我们可以通过MultiIndex类的相关方法,预先创建一个MultiIndex对象,然后作为Series与DataFrame中的index(或columns)参数值。同时,可以通过names参数指定多层索引的名称。 from_arrays...
columns=['first', 'second']) #然后使用 from_frame()创建分层索引。 index = pd.MultiIndex.from_frame(df) #将index应用于Series s=pd.Series(np.random.randn(4), index=index) print(s) 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 输出结果: ...
使用pdi.insert (df。columns, 0, ' new_col ', 1)用CategoricalIndex正确处理级别。 操作级别 除了前面提到的方法之外,还有一些其他的方法: pdi.get_level(obj, level_id)返回通过数字或名称引用的特定级别,可用于DataFrames, Series和MultiIndex pdi.set_level(obj, level_id, labels)用给定的数组(list, ...
columns=multicol1) df_multi.stack()# 内层列索引df_multi.stack(level=1)# 同上 内层列索引df_multi.stack(level=0)# 第一层列索引# 删除空数据行df_multi.stack(dropna=True) 二、unstack反堆叠 使用语法: DataFrame.unstack(level=-1, fill_value=None) ...
用MultiIndex编制索引 通过MultiIndex访问DataFrame的好处是,可以很容易地一次引用所有层次(可能会省略内部层次),而且语法很好,很熟悉。 Columns - 通过常规方括号 行和单元格--使用.loc[] 现在,如果想选择俄勒冈州的所有城市,或者只留下有人口的那一列怎么办?Python的语法在这里施加了两个限制: ...
1,指定多维列表作为columns 2,使用pd.MultiIndex中的方法显式生成多层级索引 可以使用pd.MultiIndex中的from_tuples等方法生成多层级索引。 3,使用set_index方法将普通列转成多层级索引 这种方法只能生成多层级行索引。 4,groupby和pivot_table等方法也可以生成带有多层级索引的结果 ...
index = pd.MultiIndex.from_arrays(arrays, names=['first','second']) df = pd.DataFrame(np.random.randn(4,2), index=index, columns=['A','B'])# 使用IndexSlice选择数据idx = pd.IndexSlice slice_data1 = df.loc[idx['bar','one'], :] ...