首页 > 解决方案 > Python Pandas 使用 [groupby] 时对中间列的排序

问题描述

我正在使用 python pandas 并希望按下表的中间列对输出进行排序(我已经显示了我得到的输出和我想要得到的所需输出)

我在 pandas 中使用 groupby 函数来获取输出,但是它是按计数列排序(见下面的输出表),而不是我想按 YOB 列排序(请参阅所需的输出表)

另外,我如何计算每个国家的平均出生年份。

import pandas as pd

xlpath= "C:/Users/Username/documents/Datafile.xlsx"

df = pd.read_excel(eval('xlpath'))

y = df.groupby('COUNTRY').YOB.value_counts(ascending=False)

print(y)



Output:

在此处输入图像描述

Desired Output:

在此处输入图像描述

期待您的反馈意见。

谢谢

标签: pythonpandas

解决方案


假设您不关心“国家/地区”列的排序(因为您没有指定有问题的),这是实现每个国家/地区每年分组计数的一种方法,保持年份按升序排列:

df2 = df.groupby(["Country", "YOB"]).count()
df2 = df2.sort_values(["Country","YOB"], ascending=[True, True])
print(df2)

或者在一行中:

print(df.groupby(["Country", "YOB"]).count().sort_values(["Country","YOB"], ascending=[True, True]))

推荐阅读