Groupby和sum datetime64大Pandas在一个周末的几天内进行约会

2024-04-28 11:35:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我见过多个问题,其中数据是按一周中的哪一天分组的,但我没有发现任何问题,其中数据是按几天分组在一起的

我有一个数据集

   date    day_type     bus  rail_boardings  total_rides
6636 2019-01-01        U  248879          245852       494731
6637 2019-01-02        W  591006          573542      1164548
6638 2019-01-03        W  664442          627781      1292223
6639 2019-01-04        W  668812          628514      1297326
6640 2019-01-05        A  444434          348257       792691

如你所见,我有day_类型,其中W=工作日,A=周六,U=周日/假日

我想用pandas和matplotlib显示在没有假期的汇总周末(星期五/星期六/星期日)活动的下降,并将其可视化为一个时间序列。这将使我能够比较2019年和2020年之间的周末活动。星期六日期可以是日期列中的日期(星期五或星期天不重要)

理想输出:

date                day_type   bus      rail_boardings  total_rides
6636 2019-01-01        Weekend 1  248879          245852       494731
6637 2019-01-07        Weekend 2  591006          573542      1164548
6638 2019-01-14        Weekend 3  664442          627781      1292223

感谢你的任何想法


Tags: 数据类型pandasdatematplotlibtypetotal汇总
1条回答
网友
1楼 · 发布于 2024-04-28 11:35:29

您在这里询问的是一个定制的解决方案,特别是根据周六和周日在不同箱子中的分类,如

df= pd.DataFrame({'date': pd.date_range('2018-01-01', periods=50, freq='d'), 'value':[1]*50})
map_days = {
    6: 'A',
    5: 'U',
    4: 'W',
    3: 'W',
    2: 'W',
    1: 'W',
    0: 'W'}
df=df.assign(grouper=lambda x:x['date'].dt.weekday.map(map_days))
df.groupby('grouper')['value'].count()

否则,您也可以在工作日使用pandas Building,请参见https://pandas.pydata.org/pandas-docs/stable/user_guide/timeseries.html#timeseries-custombusinessdays,但在那里您总是会得到一个二进制分类

相关问题 更多 >