按工作日分组的熊猫 (M/T/W/T/F/S/S)

2024-05-08

我有一个 pandas 数据框,其中包含 YYYY-MM-DD ('arrival_date') 形式的时间序列(作为索引),我想按每个工作日(周一到周日)进行分组,以便计算其他日期列是平均值、中位数、标准差等。我最终应该只有七行,到目前为止我只知道如何按周分组,每周汇总所有内容。

# Reading the data
df_data = pd.read_csv('data.csv', delimiter=',')

# Providing the correct format for the data
df_data = pd.to_datetime(df_data['arrival_date'], format='%Y%m%d')

# Converting the time series column to index
df_data.index = pd.to_datetime(df_data['arrival_date'], unit='d')

# Grouping by week (= ~52 rows per year)
week_df = df_data.resample('W').mean()

有没有一种简单的方法可以实现我的熊猫目标?我想选择每隔七个元素并对结果数组执行操作,但这似乎不必要地复杂。

数据框的头部看起来像这样

       arrival_date    price 1    price_2         price_3       price_4
2       20170816      75.945298  1309.715056     71.510215      22.721958
3       20170817      68.803269  1498.639663     64.675232      22.759137
4       20170818      73.497144  1285.122022     65.620260      24.381532
5       20170819      78.556828  1377.318509     74.028607      26.882429
6       20170820      57.092189  1239.530625     51.942213      22.056378
7       20170821      76.278975  1493.385548     74.801641      27.471604
8       20170822      79.006604  1241.603185     75.360606      28.250994
9       20170823      76.097351  1243.586084     73.459963      24.500618
10      20170824      64.860259  1231.325899     63.205554      25.015120
11      20170825      70.407325   975.091107     64.180692      27.177654
12      20170826      87.742284  1351.306100     79.049023      27.860549
13      20170827      58.014005  1208.424489     51.963388      21.049374
14      20170828      65.774114  1289.341335     59.922912      24.481232

我相信你需要第一个参数parse_dates in read_csv http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html将列解析为日期时间,然后groupby http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.groupby.html by weekday_name http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DatetimeIndex.weekday_name.html并汇总:

df_data = pd.read_csv('data.csv', parse_dates=['arrival_date'])

week_df = df_data.groupby(df_data['arrival_date'].dt.weekday_name).mean()
print (week_df)
                price_1      price_2    price_3    price_4
arrival_date                                              
Friday        71.952235  1130.106565  64.900476  25.779593
Monday        71.026544  1391.363442  67.362277  25.976418
Saturday      83.149556  1364.312304  76.538815  27.371489
Sunday        57.553097  1223.977557  51.952801  21.552876
Thursday      66.831764  1364.982781  63.940393  23.887128
Tuesday       79.006604  1241.603185  75.360606  28.250994
Wednesday     76.021324  1276.650570  72.485089  23.611288

对于数字索引使用weekday http://pandas.pydata.org/pandas-docs/stable/generated/pandas.Series.dt.weekday.html:

week_df = df_data.groupby(df_data['arrival_date'].dt.weekday).mean()
print (week_df)
                price_1      price_2    price_3    price_4
arrival_date                                              
0             71.026544  1391.363442  67.362277  25.976418
1             79.006604  1241.603185  75.360606  28.250994
2             76.021324  1276.650570  72.485089  23.611288
3             66.831764  1364.982781  63.940393  23.887128
4             71.952235  1130.106565  64.900476  25.779593
5             83.149556  1364.312304  76.538815  27.371489
6             57.553097  1223.977557  51.952801  21.552876

EDIT:

为了正确订购,请添加reindex http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.reindex.html:

days = ['Monday','Tuesday','Wednesday','Thursday','Friday','Saturday', 'Sunday']
week_df = df_data.groupby(df_data['arrival_date'].dt.weekday_name).mean().reindex(days)
print (week_df)
                price_1      price_2    price_3    price_4
arrival_date                                              
Monday        71.026544  1391.363442  67.362277  25.976418
Tuesday       79.006604  1241.603185  75.360606  28.250994
Wednesday     76.021324  1276.650570  72.485089  23.611288
Thursday      66.831764  1364.982781  63.940393  23.887128
Friday        71.952235  1130.106565  64.900476  25.779593
Saturday      83.149556  1364.312304  76.538815  27.371489
Sunday        57.553097  1223.977557  51.952801  21.552876
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按工作日分组的熊猫 (M/T/W/T/F/S/S) 的相关文章

随机推荐

  • ASP.NET 搜索表单 - 动态 Linq to SQL?

    我有一个搜索表单 允许用户以多种不同的方式搜索多个不同的字段 这是我的代码的示例 var claims from c in db Claims select c switch ddlSearchField Text case StartsW
  • Twitter 不再使用请求库 python

    我有一个 python 函数 它使用 requests 库和 BeautifulSoup 来抓取特定用户的推文 import requests from bs4 import BeautifulSoup contents requests
  • 使用 libgdx 裁剪图像

    I need to crop image like this 我需要从中心绘制部分图像 我知道有一个带有很多参数的批处理的draw 方法 但是没有关于所有这些参数的良好文档 所以我不知道如何使用它 这是我实现的 public class T
  • 如何创建一个类似“隐形”的Android应用程序?

    我想让我的应用程序以某种 隐形 模式运行 我想做的两件主要事情 不以编程方式在已安装的应用程序列表 抽屉 中显示应用程序图标 通过拨号盘启动应用程序 一些特殊的数字组合 我知道我可以删除启动器意图过滤器来隐藏图标
  • 使用“onclick”和 JavaScript 获取按钮上的 X/Y 坐标

    我是一名 JavaScript 初学者 正在寻找一种方法来获取单击按钮时的 x 和 y 坐标 这适用于 Opera IE9 和 Chrome 但我无法让它在 Firefox 中工作 到目前为止 这是我的代码 JavaScript 中的函数
  • SQLSTATE[HY000] [2002] 连接尝试失败,因为连接方在一段时间后没有正确响应,

    我尝试连接 2 个数据库Laravel 5 6项目 但我遇到这样的错误 SQLSTATE HY000 2002 连接尝试失败 因为连接方在一段时间后没有正确响应 或者由于连接的主机未能响应而建立的连接失败 SQL 从中选择 mt merch
  • Nodejs Base64 中的读取文件

    我正在尝试从客户端读取以 base64 编码的图像 如何使用nodejs进行阅读 My code add to buffer base64 image var encondedImage new Buffer image name base
  • 垫子选择面板最小宽度

    我正在尝试使用多个复选框自定义垫选择 由于某种原因 面板的最小宽度错误 如下所示 我不知道它在哪里计算这个最小宽度 我还尝试添加 panelClass 并覆盖此类的最小宽度 例如
  • datatables.search 函数修改后的奇怪行为

    这个问题是后续问题这个问题 https stackoverflow com questions 54671211 overriding datatables js search behavior 我已经创建了这个 JSFiddle http
  • 使用 typescript 时 html-webpack-plugin 出现太多错误

    我正在使用 Webpack 和 typescript 启动一个项目 但是当我尝试运行开发服务器时 我在 html webpack plugin 上遇到很多错误 这是我的输出 gt email protected cdn cgi l emai
  • 如何强制元数据值类型为字符串?

    我在manifest xml中指定了一个元数据 如下所示
  • 使用 HttpClient 的 Xamarin.iOS 项目出现“操作无效”错误

    我创建 HttpClient 并在按钮单击处理程序中调用 GetStringAsync 方法 var client new HttpClient var response await client GetStringAsync http g
  • 如何更新状态变更指令

    我有一个根状态 它定义了 Angular 模板的整体结构 在根状态下 我包含侧边栏 其中通过根据状态更改的指令具有动态菜单 像这样 state root abstract true url root templateUrl views ro
  • [本机]:在Qt for Android中使用Java函数和第3方库[关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 最近我用qt写了一个android应用程序 但我有一个很大的问题 我可以使用 调用一些原生的android API 比如调用特殊的activit
  • 过滤 Django 管理选择框的模型结果

    我今天刚开始使用 Django 到目前为止发现做简单的事情相当困难 我现在正在努力解决的是过滤状态类型列表 StatusTypes 模型是 class StatusTypes models Model status models CharF
  • AWS CLI S3API 查找路径中的最新文件夹

    我有一个非常大的桶 数十万个对象 我有一条路径 假设 s3 myBucket path1 path2 path2 获取也是文件夹的上传内容 因此 示例可能如下所示 s3 myBucket path1 path2 v6 1 0 s3 myBu
  • 在PHP中引用容器对象的方法?

    PHP 中给出以下内容
  • 是否可以找到哪个用户位于 localhost TCP 连接的另一端?

    这是一个编程问题 但它是 Linux Unix 特定的 如果我从本地主机获得 TCP 连接 是否有一种简单的方法可以告诉哪个用户在 C 程序内建立了连接而无需 shell 我知道这对于 Unix 域套接字来说并不太难 我已经知道远程 IP
  • numpy 中的分层抽样

    在 numpy 中我有一个这样的数据集 前两列是索引 我可以通过索引将数据集分成多个块 即第一个块是 0 0 第二个块是 0 1 第三个块 0 2 然后是 1 0 1 1 1 2 等等 每个块至少有两个元素 索引列中的数字可能会有所不同 我
  • 按工作日分组的熊猫 (M/T/W/T/F/S/S)

    我有一个 pandas 数据框 其中包含 YYYY MM DD arrival date 形式的时间序列 作为索引 我想按每个工作日 周一到周日 进行分组 以便计算其他日期列是平均值 中位数 标准差等 我最终应该只有七行 到目前为止我只知道