当前位置: 首页 > 面试题库 >

为熊猫MultiIndex设置一个级别

锺离晗昱
2023-03-14
问题内容

经过一些分组后,我创建了一个具有MultiIndex的DataFrame:

import numpy as np
import pandas as p
from numpy.random import randn

df = p.DataFrame({
    'A' : ['a1', 'a1', 'a2', 'a3']
  , 'B' : ['b1', 'b2', 'b3', 'b4']
  , 'Vals' : randn(4)
}).groupby(['A', 'B']).sum()

df

Output>            Vals
Output> A  B           
Output> a1 b1 -1.632460
Output>    b2  0.596027
Output> a2 b3 -0.619130
Output> a3 b4 -0.002009

如何在MultiIndex前面添加一个级别,以便将其转换为类似以下内容:

Output>                       Vals
Output> FirstLevel A  B           
Output> Foo        a1 b1 -1.632460
Output>               b2  0.596027
Output>            a2 b3 -0.619130
Output>            a3 b4 -0.002009

问题答案:

一种使用pandas.concat()以下代码完成此操作的好方法:

import pandas as pd

pd.concat([df], keys=['Foo'], names=['Firstlevel'])

甚至更短的方法:

pd.concat({'Foo': df}, names=['Firstlevel'])

这可以推广到许多数据框架,请参阅docs。



 类似资料:
  • 问题内容: 为什么在多索引DataFrame时不能使用偏移量? 例如,使用: 如果我尝试使用偏移量进行分组和滚动,则会显示“ ValueError:窗口必须为整数 ”: 并不是说以下这些变体可以满足我的需求,但是请注意对作品进行分组和滚动: 我可以在DataFrame的单索引子集上使用偏移量滚动: 如果确实不可能在多索引DataFrame上进行偏移滚动,那么将零应用于每个0级索引项的最有效的解决方

  • 问题内容: 我正在使用to_csv将Multiindex DataFrame写入csv文件。csv文件的一列包含元组中的多索引,例如: 但是,我希望能够将Multiindex输出到两列而不是一列的元组,例如: 看起来可以为列实现此目的,但对于行则没有这样的选择。有没有办法做到这一点? 问题答案: 我认为这可以做到 使用索引重复来编写(虽然有点骇人听闻) 回读实际上有点棘手

  • 问题内容: 我试图读取通过via 创建的数据框,但得到了。我认为这可能与索引为MultiIndex的事实有关,但我不确定如何处理。 调用了55k行的原始数据框,并通过以下方式创建了该数据框: 如果要使用它,这是输出。 当我对这小部分数据(5行)进行处理时,我得到一个。 这是完整的堆栈: 但是,当我在整个数据帧(55k行)上执行此操作时,我得到一个无效的指针错误,并且IPython内核死亡。有任何想

  • 问题内容: 我有一个类似MultiIndex的系列: 我想获得s [‘b’]值,其中第二个索引(’ ‘)在2到10之间。 在第一个索引上切片可以正常工作: 但不是第二种,至少从似乎是两种最明显的方式来看: 1)这将返回元素1至4,与索引值无关 但是,如果我反转索引,并且第一个索引是整数,第二个索引是字符串,则可以正常工作: 问题答案: 正如Robbie-Clarken回答的那样,从0.14开始,您

  • 如果我有一个多级列索引: 我如何才能降低该指数的“a”级,因此我最终得到:

  • 问题内容: 我有两列,将集存储在数据框中。 我想使用快速向量化操作在两列上执行集合并集 但是错误使我无法这样做,因为我在两列中都输入了内容。 有解决这个问题的好方法吗? 问题答案: 对于这些操作,纯Python可能更有效。 如果我们可以使用,则可能会花费一半的时间(继承可能不值得): 时序的DataFrame: