我从这样的输入数据开始
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) 我正在使用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) 给定一个数据框,记录一些书的使用情况,如下所示:
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)
如何才能做到这一点?
谢谢!