我有以下类型的数据:
df = pd.DataFrame({'Election Yr.':[2000,2000,2000,2000,2000,2000,2005,2005,2005,2005,2005,2005],
'Party':['A','A','B','B','C','C','A','A','B','B','C','C',],
'Votes':[50,30,40,50,30,40,50,30,40,50,30,40],
'Odd':['aa','bb','cc','dd','ee','gg','ff', 'hh', 'jj', 'kk', 'll', 'yy']})
我想按选举年分组,并对选票中的值求和,同时保留与每个唯一的选举年的选票最大值对应的政党的值以及奇数的第一个值。
我想出了一个部分解决方案如下:
df = pd.DataFrame(df.groupby(['Election Yr.'], as_index=False).agg({'Votes':'sum', 'Party':'idxmax', 'Odd':'first'}))
但 Party:'idxmax ' 似乎不正确,因为值是字符串
2条答案
按热度按时间kqqjbcuj1#
或尝试:
也可以使用它将max函数应用于'Votes'列,然后使用生成的索引选择'Party'列的相应值:
xwbd5t1u2#
您可以创建两个 Dataframe :
1.每年投票总数和第一个奇数值
1.与年数最大值匹配的交易方(可以是多个)
合并这两个变量后,您将收到以下结果:
请注意,每个选举年有两行,因为有两个不同的政党与每年的最大选票值(50)相对应。