如何为每个索引查找列值最大的行?

2024-04-29 00:27:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在研究联邦选举委员会(Federal Elections Commission)关于美国众议院2018年中期选举支出的数据集。因为它包含了所有候选人(包括初选失利的候选人),而我只对大选民主党候选人感兴趣,所以我正试图将数据集缩小到提名民主党人。我假设这些人将是每个地区支出最高的民主党人

起始数据集在这里:https://www.fec.gov/data/candidates/house/?election_year=2018&election_full=True&party=DEM&is_active_candidate=true

我创建了一个新的列state_dist,它是statedistrict的组合,后者变成int,然后是str。然后按州和地区将其排序为:

enter image description here

我还有一个叠加版本,按州和地区叠加:

enter image description here

我尝试从Bharath's answer here借用代码。它创建了以下内容:

enter image description here

问题是max_in_district似乎返回了正确的值,但我还需要候选名称和其他变量,以便将其附加到我的主项目数据帧。我尝试在max_in_district_2中添加name,但这并没有返回我要查找的结果

为了清楚起见,我希望每个"state_dist"值中的整行在"disbursements"列中具有最高值。我该怎么得到这个

先谢谢你


Tags: 数据indistmax地区state联邦委员会
2条回答

你可以做:

df.loc[
    df.groupby("state_dist", as_index=False)["disbursements"].idxmax()[
        "disbursements"
    ]
].to_csv("out.csv")

这将创建out.csv

enter image description here

找到idxmax,然后将数据合并回原始帧:

df.set_index('name').groupby(['state_dist'], as_index=False)['disbursements'].idxmax()\
.merge(df, right_on=['name', 'state_dist'], 
       left_on=['disbursements', 'state_dist'])

相关问题 更多 >