相关疑难解决方法(0)

将Pandas GroupBy对象转换为DataFrame

我从这样的输入数据开始

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

打印时显示如下:

   City     Name
0   Seattle    Alice
1   Seattle      Bob
2  Portland  Mallory
3   Seattle  Mallory
4   Seattle      Bob
5  Portland  Mallory
Run Code Online (Sandbox Code Playgroud)

分组很简单:

g1 = df1.groupby( [ "Name", "City"] ).count()
Run Code Online (Sandbox Code Playgroud)

和打印产生一个GroupBy对象:

                  City  Name
Name    City
Alice   Seattle      1     1
Bob     Seattle      2     2
Mallory Portland     2     2
        Seattle      1     1
Run Code Online (Sandbox Code Playgroud)

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

                  City  Name
Name …
Run Code Online (Sandbox Code Playgroud)

python multi-index dataframe pandas pandas-groupby

433
推荐指数
9
解决办法
55万
查看次数

将min()与groupby一起使用时,保留其他列

我正在使用groupbypandas数据帧删除所有没有特定列的最小行.像这样的东西:

df1 = df.groupby("item", as_index=False)["diff"].min()
Run Code Online (Sandbox Code Playgroud)

但是,如果我有超过这两列,则其他列将被删除.我可以使用groupby保留这些列,还是我必须找到一种不同的方法来删除行?

我的数据如下:

    item    diff   otherstuff
   0   1       2            1
   1   1       1            2
   2   1       3            7
   3   2      -1            0
   4   2       1            3
   5   2       4            9
   6   2      -6            2
   7   3       0            0
   8   3       2            9
Run Code Online (Sandbox Code Playgroud)

并应该最终像:

    item   diff  otherstuff
   0   1      1           2
   1   2     -6           2
   2   3      0           0
Run Code Online (Sandbox Code Playgroud)

但我得到的是:

    item   diff
   0   1      1           
   1   2     -6           
   2   3      0                 
Run Code Online (Sandbox Code Playgroud)

我一直在查看文档,找不到任何东西.我试过了:

df1 = df.groupby(["item", …
Run Code Online (Sandbox Code Playgroud)

python aggregate pandas pandas-groupby

53
推荐指数
2
解决办法
4万
查看次数

如何在Pandas中组合数据框并保留列

给定一个数据框,记录一些书的使用情况,如下所示:

Name   Type   ID
Book1  ebook  1
Book2  paper  2
Book3  paper  3
Book1  ebook  1
Book2  paper  2
Run Code Online (Sandbox Code Playgroud)

我需要得到所有书籍的数量,保留其他列并得到这个:

Name   Type   ID    Count
Book1  ebook  1     2
Book2  paper  2     2
Book3  paper  3     1
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

谢谢!

python pandas

48
推荐指数
3
解决办法
6万
查看次数