gpt4 book ai didi

python - 根据多列和一列的总和重新排序 pandas 数据框

转载 作者:太空宇宙 更新时间:2023-11-03 16:41:20 24 4
gpt4 key购买 nike

我有以下内容。数据框:

              Country_FAO            type   mean_area
0 Afghanistan car 2029000.0
1 Afghanistan car 112000.0
2 Algeria bus 827000.0
3 Algeria bus 2351.0
4 Australia car 6475695.0
5 Australia car 12141000.0
6 Australia bus 293806.0

我想根据 Country_FAO 列中每个值的 mean_area 总和重新排序此数据框。最终结果应如下所示:

              Country_FAO            type   mean_area
0 Australia car 12141000.0
1 Australia car 6475695.0
2 Australia bus 293806.0
3 Afghanistan car 2029000.0
4 Afghanistan car 112000.0
5 Algeria bus 827000.0
6 Algeria bus 2351.0

澳大利亚排名第一,因为其 3 个类别的 mean_area 值之和最高。

我尝试过这个:

df_stacked.sort(['Country_FAO', 'mean_area'], ascending=[False, False])

但这不起作用,它在排序之前不会将所有 mean_area 相加。

最佳答案

我认为您需要按 groupby 创建新列排序transform然后sort_values 。最后你可以drop它与 reset_index :

df['sort'] = df.groupby('Country_FAO')['mean_area'].transform(sum)

df['sort'] = df.groupby('Country_FAO')['mean_area'].transform(sum)

df1 = df.sort_values(['sort','Country_FAO', 'mean_area'], ascending=False)
print df1
Country_FAO type mean_area sort
5 Australia car 12141000.0 18910501.0
4 Australia car 6475695.0 18910501.0
6 Australia bus 293806.0 18910501.0
0 Afghanistan car 2029000.0 2141000.0
1 Afghanistan car 112000.0 2141000.0
2 Algeria bus 827000.0 829351.0
3 Algeria bus 2351.0 829351.0

df1 = df1.drop('sort', axis=1).reset_index(drop=True)
print df1
Country_FAO type mean_area
0 Australia car 12141000.0
1 Australia car 6475695.0
2 Australia bus 293806.0
3 Afghanistan car 2029000.0
4 Afghanistan car 112000.0
5 Algeria bus 827000.0
6 Algeria bus 2351.0

关于python - 根据多列和一列的总和重新排序 pandas 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36754958/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com