在Python中以正确的顺序对星期几进行排序

安德里亚娜

我正在从python中的csv文件导入一些数据,并创建一个称为frame5的数据框。

我有每日数据以及每天的日期。到目前为止,我已经使用以下内容将日期转换为星期几。

    frame5['day_of_week']=frame5['date'].dt.dayofweek
    days = {0:'Mon',1:'Tues',2:'Weds',3:'Thurs',4:'Fri',5:'Sat',6:'Sun'}
    frame5['day_of_week'] = frame5['day_of_week'].apply(lambda x: days[x])

然后,为了计算每日平均值,我使用:

grouped_day_of_week=frame5.groupby('day_of_week') 
day_of_week_statistics=grouped_day_of_week['reward'].agg([np.mean,np.size,np.sum])

然后,我想用日常手段绘制一个图。

但是,在数据框day_of_week_statistics中,日期似乎按字母顺序排序(每一行是为一周中的每一天计算的统计信息)。

如何更改日期的顺序,以使它们以“星期一”,“星期二”,“星期三”,“星期四”,“星期五”,“星期六”,“星期日”的正确顺序出现?

cs95

按星期几进行预排序。另外,由于套用较慢,因此您可以使用地图/替换。

i = frame5['date'].dt.dayofweek.values.argsort()
frame5 = frame5.iloc[i]

frame5['day_of_week'] = frame5['day_of_week'].map(days)  # .replace(days)
When calling groupby, call it with sort=False, since groupby usually returns groups in sorted order of index. We do this since we don't want to disrupt the sorted order from earlier.

grouped_day_of_week = frame5.groupby('day_of_week', sort=False) 

改进的解决方案由Jon Clements提供。这利用了以前的概念,但效率更高。

呼叫groupbydt.dayofweek,随后map对结果指标-

g = frame5.groupby(frame5['date'].dt.dayofweek)['Reward'].agg(['mean', 'size', 'sum'])
g.index = g.index.map(days.get)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章