Python 在数据框中按月份和年份分组

Python 在数据框中按月份和年份分组,python,pandas,dataframe,pandas-groupby,Python,Pandas,Dataframe,Pandas Groupby,我有以下数据集,包括刷卡和刷卡时间。输出必须是每月和每年刷卡的总数量 Card No Date Time 34235 9/17/2018 5:19 56438 9/17/2018 5:57 634787 9/17/2018 5:58 79749 9/17/2018 5:59 48947 9/17/2018 6:00 3776 9/17/2018 6:07 34235 9/17/2018 6:20 56438 9/17/2018 6:23 634787 9/17/

我有以下数据集,包括刷卡和刷卡时间。输出必须是每月和每年刷卡的总数量

Card No Date Time
34235   9/17/2018 5:19
56438   9/17/2018 5:57
634787  9/17/2018 5:58
79749   9/17/2018 5:59
48947   9/17/2018 6:00
3776    9/17/2018 6:07
34235   9/17/2018 6:20
56438   9/17/2018 6:23
634787  9/17/2018 6:29
79749   9/17/2018 6:35
48947   9/17/2018 6:43
3776    9/17/2018 7:05
34235   9/17/2018 7:06
56438   9/20/2018 14:25
634787  9/20/2018 14:25
79749   9/20/2018 14:26
48947   9/20/2018 14:27
3776    9/20/2018 14:28
34235   9/20/2018 14:29
56438   9/20/2018 14:32
634787  9/20/2018 14:34
79749   11/21/2018 7:58
48947   11/21/2018 8:02
3776    11/21/2018 8:02
634787  11/21/2018 8:05
79749   11/21/2018 8:11
48947   11/21/2018 8:13
3776    11/21/2018 8:20
34235   12/4/2018 14:36
56438   12/4/2018 14:37
634787  12/4/2018 14:44
79749   12/4/2018 14:44
48947   12/4/2018 14:52
3776    12/4/2018 14:54
输出

Month/Year Count
Sep/2018 21
Nov/2018 7
Dec/2018 6
我尝试过使用groupby,但未能达到预期的输出

  df1 = pd.DataFrame(data1, columns= ['Card No','Date Time'])

df2 = df1.groupby([df1['Date Time'].dt.year.rename('year'), df1['Date Time'].dt.month.rename('month')).agg({'count'}) 

如何包含月份名称?

既然您尝试了,我会这样做,以实现您的预期输出

df['month_'] = df['Date Time'].dt.strftime('%b')
df['year_'] = df['Date Time'].dt.strftime('%Y')
new_df = df.groupby(["month_", "year_"])["Card_No"].count().reset_index().sort_values(
    "Card_No", ascending=False)
print(new_df)
    month_  year_   Card No
2   Sep 2018    21
1   Nov 2018    7
0   Dec 2018    6
了解更多信息

编辑 要按月份排序,您需要使用某种整数值,尽管有些人可能知道得更好

    df['month_'] = df['Date Time'].dt.strftime('%m') # change %b to %m
   df['year_'] = df['Date Time'].dt.strftime('%Y')
   new_df = df.groupby(["month_", "year_"])["Card_No"].count().reset_index().sort_values(
    "month_")

因此,我不打算教你如何从熊猫开始。实际上,您要求我们对您的任务进行编码。请参考在线pandas教程,从这里开始学习:既然您正在寻找一个提示,请查看日期\时间栏的dt.strftime访问器祝您好运!df2=df1.groupby[df1['Date-Time'].dt.year.rename'year',df1['Date-Time'].dt.month.rename'month.agg{'count'}@PatrickArtner我用我的部分答案编辑了这个问题。我已经取得了进展。我想按月份和年份排序。我尝试使用了,但没有按预期排序。new\u df=df1.groupby[month\uu,year\uu].count.reset_index.sort_值[年,月],升序=[假,假]这很难,因为它现在是一个对象,而不是datetime对象。不确定如何按月份和年份进行排序。是的,它按月份名称进行排序,但理想情况下,编辑时应该按月份顺序排列。我还有一个问题。我如何计算每月的平均刷卡次数。平均刷卡次数等于刷卡次数月的es除以该月的天数。按月或月/年?平均值方法没有帮助吗?