它是示例输入。我想根据“年份”列进行分组,并想在月份列上使用值计数,然后根据月份顺序对“月份”列进行排序。
年份 | 月 |
---|---|
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日 |
您可以使用 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))