当前位置: 首页 > 知识库问答 >
问题:

如何在Pandas中创建多索引

丌官星渊
2023-03-14

有两个问题看起来很相似,但它们不是同一个问题:这里和这里。它们都调用GroupBy的方法,例如count()aggregate(),我知道这会返回一个DataFrame。我要问的是如何将GroupBy(classpandas.core.GroupBy.DataFrameGroupBy)对象本身转换为DataFrame。我将在下面举例说明。

构建一个示例DataFrame,如下所示。

data_list = []
for name in ["sasha", "asa"]:
    for take in ["one", "two"]:
        row = {"name": name, "take": take, "score": numpy.random.rand(), "ping": numpy.random.randint(10, 100)}
        data_list.append(row)
data = pandas.DataFrame(data_list)

上面的DataFrame应该如下所示(显然有不同的数字)。

    name  ping     score take
0  sasha    72  0.923263  one
1  sasha    14  0.724720  two
2    asa    76  0.774320  one
3    asa    71  0.128721  two

我想做的是按列名称和采取分组(按此顺序),这样我就可以得到一个DataFrame由列名称和采取构建的多索引索引,如下所示。

               score  ping
 name take        
sasha  one  0.923263    72
       two  0.724720    14
  asa  one  0.774320    76
       two  0.128721    71

我如何实现这一点?如果我做了group=data.groupby(["name","get"]),那么group是一个pandas.core.groupby.DataFrameGroupBy实例。正确的做法是什么?

共有1个答案

景胜涝
2023-03-14

你需要set_index

data = data.set_index(['name','take'])
print (data)
            ping     score
name  take                
sasha one     46  0.509177
      two     77  0.828984
asa   one     51  0.637451
      two     51  0.658616
 类似资料:
  • 问题内容: 在用户属于特定组织的情况下,我们具有以下实体关系。我的查询看起来像是“从org =:org用户选择”或“从org =:org用户输入和type =:type选择” 我在User类上有单独的索引。由于外键元素上的索引,因此第一个查询会很好。第二个查询是否对组织和类型列要求多列索引。如果是这样,我应该如何注释以创建一个这样的索引。 问题答案: 使用hibernate特定注释可以做到这一点。

  • 我正在尝试保存一个csv到一个文件夹后,使一些编辑的文件。 每次使用,csv文件都有一个单独的索引列。我想避免将索引打印到CSV。 我试过: 保存文件... 不过,我还是得到了不想要的索引列。当我保存我的文件时,我该如何避免这种情况呢?

  • 问题内容: 我使用以下代码在logstash.conf中创建索引 为了创建另一个索引,我通常在上面的代码中用另一个索引名称替换索引名称。有什么办法可以在同一文件中创建许多索引?我是ELK的新手。 问题答案: 您可以根据其中一个字段的值在索引名称中使用模式。在这里,我们使用字段的值来命名索引: 您还可以将多个输出用于同一ES主机或不同ES主机: 或者,您可能想根据某个变量将文档路由到不同的索引: 更

  • 现在,我要检索一个值: Q1:在[3.3,6.6]范围内-预期返回值:[3.3,5.5,6.6]或[3.3,3.3,5.5,6.6](包括最后一个),如果没有,则为[3.3,5.5]或[3.3,3.3,5.5]。 Q2:在[2.0,4.0]范围内-预期返回值:[3.3]或[3.3,3.3] 对于任何其他多索引维度都是相同的,例如B值: Q3:在范围[111,500]中有重复,作为范围中的数据行数-

  • 问题内容: 我正在尝试在Amazon Redshift中创建索引,但收到错误 是一个整数字段。 问题答案: 如果尝试在Redshift表上创建索引(带有名称): 您会收到错误消息 执行SQL命令时发生错误:在“ SomeTable”(“ UserId”)上创建索引IX1错误:Redshift表不支持SQL命令“在” SomeTable“(” UserId“))上创建索引IX1。 这是因为,与其他数

  • 我使用的是弹性6.3.2中的IndexRequest。现在我更改为版本7.6.2。如何使用CreateIndexRequest执行以下相同的步骤? 弹性Rest高级客户端6.3.2代码: 切换到7.6.2后,我无法在CreateIndexRequest中创建类型、id和源。