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

将Pandas GroupBy输出从Series转换为DataFrame

金何平
2023-03-14
问题内容

我从这样的输入数据开始

df1 = pandas.DataFrame( { 
    "Name" : ["Alice", "Bob", "Mallory", "Mallory", "Bob" , "Mallory"] , 
    "City" : ["Seattle", "Seattle", "Portland", "Seattle", "Seattle", "Portland"] } )

打印时显示为:

   City     Name
0   Seattle    Alice
1   Seattle      Bob
2  Portland  Mallory
3   Seattle  Mallory
4   Seattle      Bob
5  Portland  Mallory

分组非常简单:

g1 = df1.groupby( [ "Name", "City"] ).count()

打印产生一个GroupBy对象

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
        Seattle      1     1

但是我最终想要的是另一个DataFrame对象,该对象包含GroupBy对象中的所有行。换句话说,我想得到以下结果:

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
Mallory Seattle      1     1

我在pandas文档中看不到如何完成此操作。任何提示都将受到欢迎。


问题答案:

g1这是一个DataFrame。但是,它具有层次结构索引:

In [19]: type(g1)
Out[19]: pandas.core.frame.DataFrame

In [20]: g1.index
Out[20]: 
MultiIndex([('Alice', 'Seattle'), ('Bob', 'Seattle'), ('Mallory', 'Portland'),
       ('Mallory', 'Seattle')], dtype=object)

也许你想要这样的东西?

In [21]: g1.add_suffix('_Count').reset_index()
Out[21]: 
      Name      City  City_Count  Name_Count
0    Alice   Seattle           1           1
1      Bob   Seattle           2           2
2  Mallory  Portland           2           2
3  Mallory   Seattle           1           1

或类似的东西:

In [36]: DataFrame({'count' : df1.groupby( [ "Name", "City"] ).size()}).reset_index()
Out[36]: 
      Name      City  count
0    Alice   Seattle      1
1      Bob   Seattle      2
2  Mallory  Portland      2
3  Mallory   Seattle      1


 类似资料:
  • 问题内容: 我有一个熊猫系列科幻小说: 我想将其转换为以下DataFrame: 我找到了一种方法,但是我怀疑这是更有效的方法: 问题答案: 无需创建2个临时df,您可以使用DataFrame构造函数将它们作为参数传递给dict中: 有很多方法可以构建df,请参阅文档

  • 如何为新类别重新训练图像分类器中描述的脚本Retrain.py运行为 并生成输出文件。将此转换为

  • 问题内容: 我需要将Opencover Coverage结果导入Jenkins的能力,以便随着时间的推移提取Coverage趋势数据。似乎最好的方法是找到一种方法,将opencover xml格式转换为ncover格式,然后使用NCover插件导入结果。是否存在将xpress将opencover转换为ncover的现有xslt,或将进行转换的开源工具?我已经搜索过,却一无所获。 谢谢 问题答案:

  • 问题内容: 如何获得XUnit格式的Go测试库输出以与Jenkins集成?没有命令行选项可使用输出到XML或XUnit格式。 问题答案: 有一个很好的小插件可以转换:https : //github.com/tebeka/go2xunit 要安装它: 要使用它: 如果您的情况正常:

  • 问题内容: 是否可以使用bash脚本将的输出格式化为json数组?为了成为有效的json,目录和文件的所有名称都必须用双引号引起来,并用逗号分隔,并且整个内容都必须用方括号括起来。即转换: 至 编辑:我非常喜欢可以在所有Linux服务器上使用的东西;因此,宁可不依赖python,而要使用纯bash解决方案。 问题答案: 使用perl作为编码器;保证它不会是越野车,到处都是,而且有了管道,它还是相当