我有一个如下的数据集。
MonthDate DayCategory
Jan-01 Federal Holiday
Jan-19 Federal Holiday
Jan-23 Event
Jan-31 Event
Feb-14 Event
Feb-16 Federal Holiday
Feb-19 Federal Holiday
Feb-22 Federal Holiday
我想要这个列表,就像下面的列表
使用Python代码的输出列表应如下所示:
Month FederalHoliday Event
Jan 2 2
Feb 3 1
请帮助我吗?
答案 0 :(得分:2)
对于正确的排序,需要排序的类别,对于计数,请使用crosstab
:
cats = ['Jan', 'Feb', 'Mar', 'Apr','May','Jun', 'Jul', 'Aug','Sep', 'Oct', 'Nov', 'Dec']
md = pd.to_datetime(df['MonthDate'], format='%b-%d').dt.strftime('%b')
#alternative
#md = df['MonthDate'].str.split('-').str[0]
df = pd.crosstab(pd.Categorical(md, categories=cats, ordered=True),
df['DayCategory']).rename_axis('Month').reset_index()
df.columns.name = None
print (df)
Month Event Federal Holiday
0 Jan 2 2
1 Feb 1 3
答案 1 :(得分:1)
假设您使用日期而不是月份作为字符串,则可以使用:
pd.crosstab(df.MonthDate.dt.strftime('%b'),df.DayCategory).rename_axis(None,1)
Event Federal Holiday
MonthDate
Feb 1 3
Jan 2 2
答案 2 :(得分:0)
df.pivot_table(index=df["MonthDate"].str[:3], columns="DayCategory", aggfunc="count")