Python 使用数据帧/排序
我正在使用Excel中的一个大数据集,在这个数据集中,我试图按每个索引值的前25位对数字进行排序 数据站点如下所示: 最终的PAC ID是公司编号和变更(在给定数据中不显示)。PAC贡献是我想要排序的数字 例如,C00003590公司将向不同的候选人提供50笔捐款,金额为“PAC捐款”,我想对每个公司的前25笔捐款进行排序 我尝试过使用字典,为每个公司创建一个字典,并将候选数字作为字符串键添加进去,将贡献作为值添加进去 到目前为止,我的代码如下(但这可能是完全错误的方式): 我认为你需要: 如果需要所有列:Python 使用数据帧/排序,python,excel,sorting,pandas,Python,Excel,Sorting,Pandas,我正在使用Excel中的一个大数据集,在这个数据集中,我试图按每个索引值的前25位对数字进行排序 数据站点如下所示: 最终的PAC ID是公司编号和变更(在给定数据中不显示)。PAC贡献是我想要排序的数字 例如,C00003590公司将向不同的候选人提供50笔捐款,金额为“PAC捐款”,我想对每个公司的前25笔捐款进行排序 我尝试过使用字典,为每个公司创建一个字典,并将候选数字作为字符串键添加进去,将贡献作为值添加进去 到目前为止,我的代码如下(但这可能是完全错误的方式): 我认为你需要: 如
cols = df.columns[~df.columns.isin(['PAC contribution','Final PAC ID'])].tolist()
df1 = df.set_index(cols)
.groupby('Final PAC ID')['PAC contribution']
.nlargest(50)
.reset_index()
另一种解决方案(可能更慢):
上次保存到excel的方法是:
你可以在这里与词典理解结合使用。结果
是一个字典,其中包含公司名称作为关键字,以及前25个付款作为值的子数据框:
def aggregate(sub_df):
return sub_df.sort_values('PAC contribution', ascending=False).head(25)
grouped = df.groupby('Final PAC ID')
results = {company: aggregate(sub_df)
for company, sub_df in grouped}
这正是我需要的!但是,我如何将其保存回excel文件?如果我删除print命令,它似乎不会改变数据帧本身。啊,对了,我尝试过做同样的事情,但我没有做一个新的数据帧,而是尝试覆盖当前的数据帧。不过非常感谢你的回答,帮助很大。
cols = df.columns[~df.columns.isin(['PAC contribution','Final PAC ID'])].tolist()
df1 = df.set_index(cols)
.groupby('Final PAC ID')['PAC contribution']
.nlargest(50)
.reset_index()
df1 = df.sort_values('PAC contribution', ascending=False).groupby('Final PAC ID').head(50)
df1.to_excel('filename.xlsx')
df.groupby('Final PAC ID').head(50).reset_index(drop=True)
def aggregate(sub_df):
return sub_df.sort_values('PAC contribution', ascending=False).head(25)
grouped = df.groupby('Final PAC ID')
results = {company: aggregate(sub_df)
for company, sub_df in grouped}