在多索引 groupby 对象中对月份进行排序

问题描述 投票:0回答:1

它是示例输入。我想根据“年份”列进行分组,并想在月份列上使用值计数,然后根据月份顺序对“月份”列进行排序。

年份
2000 十月
2002 一月
2002 三月
2000 十月
2002 三月
2000 一月

我这样做了: df

.groupby(['Year'])['month'].value_counts()
我得到以下输出:

2000 10 月 2 日
1 月 1 日
2002 3月2日
1 月 1 日

现在我需要按原始月份顺序对月份进行排序。我该怎么办? 我想要以下输出:

2000 1 月 1 日
10 月 2 日
2002 1 月 1 日
3月2日
python pandas sorting group-by yearmonth
1个回答
0
投票

您可以使用 groupby() 和

sort_values(by=['Year', 'month'])
:

import pandas as pd


def _sort_month(df):
    month_order = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
    df['month'] = pd.Categorical(df['month'], categories=month_order, ordered=True)
    GB = df.groupby(['Year'])['month'].value_counts()
    G = GB.reset_index(name='count')
    res = G.sort_values(by=['Year', 'month'])
    res.set_index(['Year', 'month'], inplace=True)
    return res


df = pd.DataFrame({'Year': [2000, 2002, 2002, 2000, 2002, 2000],
                   'month': ['Oct', 'Jan', 'Mar', 'Oct', 'Mar', 'Jan']})

print(_sort_month(df))

打印


© www.soinside.com 2019 - 2024. All rights reserved.