微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用groupby获取与列最大值对应的所有行 1.使用内连接2.排序并保持第一次观察

如何解决如何使用groupby获取与列最大值对应的所有行 1.使用内连接2.排序并保持第一次观察

对于给定的数据帧 df 为:

   Election Yr.  Party   States Votes
0     2000           A       a    50  
1     2000           A       b    30
2     2000           B       a    40
3     2000           B       b    50  
4     2000           C       a    30
5     2000           C       b    40
6     2005           A       a    50  
7     2005           A       b    30
8     2005           B       a    40
9     2005           B       b    50  
10    2005           C       a    30
11    2005           C       b    40

我想获得相应年份获得最多选票的政党。我使用以下代码将“选举年”和“政党”分组,然后使用 .sum() 来获得每年每个政党的总票数。

df = df.groupby(['Election Yr.','Party']).sum()

现在如何获得每年获得最多票数的派对?我无法得到这个。

非常感谢任何支持

解决方法

尝试结合使用 groupbyidxmax

gb = df.groupby(["Election Yr.","Party"]).sum()
gb.loc[gb.groupby("Election Yr.")["Votes"].idxmax()].reset_index()
>>> gb
   Election Yr. Party  Votes
0          2000     B     90
1          2005     B     90
,

1.使用内连接

您可以在做第一个 df 之前先从 groupby 开始。然后,您将获得每年的最大票数,然后将年票组合合并以获得每年得票最多的政党。

# Original data
df = pd.DataFrame({'Election Yr.':[2000,2000,2005,2005],'Party':['A','A','B','C',],'Votes':[50,30,40,50,40]})

# Get number of votes per year-party
df = df.groupby(['Election Yr.','Party'])['Votes'].sum().reset_index()

# Get max number of votes per year
max_ = df.groupby('Election Yr.')['Votes'].max().reset_index()

# Merge on key
max_ = max_.merge(df,on=['Election Yr.','Votes'])

# Results
print(max_)

>    Election Yr.  Votes Party
> 0          2000     90     B
> 1          2005     90     B

2.排序并保持第一次观察

或者,您可以按每年的投票数排序:

df = df.groupby(['Election Yr.','Party'])['Votes'].sum().reset_index()
df = df.sort_values(['Election Yr.','Votes'],ascending=False)
print(df.groupby('Election Yr.').first().reset_index())

print(df)

>    Election Yr. Party  Votes
> 0          2000     B     90
> 1          2005     B     90
,

Here you can see the total number of votes given to each Party (A,B,C) according to Election Yr.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?