首页 > 解决方案 > 通过对另一列的某些操作对基于组的 Pandas 数据框进行排序

问题描述

我有一个 Columns 行

分数

乡村击球手跑 印度萨钦 15000
印度维拉特 12000
澳大利亚史密斯 10000 澳大利亚华纳 8000 澳大利亚瑞奇 11000 纽泽拉德威廉姆森 8000 英格兰巴特勒 5000 英格兰斯托克斯 9000 ....

……

我想找到总体运行次数排名前 3 的国家/地区。我的输出应该是

澳大利亚 29000 印度 27000 英国 14000 新西兰 8000

我无法找到一个确切的表达方式。

我试过这个 Score.groupby('Country')['Runs'].sum()

这给了我一个系列的整个输出,但不是升序,因为它将国家和运行放在一起作为一个列。

根据所有击球手的总得分对国家进行排序的最佳方法是什么?我看到了对一列进行分组和对另一列进行排序的方法,但在这里我希望它对运行列上的某些操作进行排序(此处求和)

标签: pythonpandasdataframe

解决方案


测试数据:

df = pd.DataFrame(
    {
        "Country": [
            "India",
            "India",
            "Australia",
            "Australia",
            "Australia",
            "New Zealand",
        ],
        "Batsman": ["Sachin", "Virat", "Smith", "warner", "Ricky", "Wiliamson"],
        "Run": [15000, 12000, 10000, 8000, 1100, 8000],
    }
)

Pandas groupby 排序:

df.groupby("Country").sum().sort_values("Run", ascending=False)

输出:

               Run
Country           
India        27000
Australia    19100
New Zealand   8000

推荐阅读