【问题标题】:Pandas: How to create a new column which contains number of each weekday inside month?Pandas:如何创建一个包含月内每个工作日数的新列?
【发布时间】:2021-05-07 21:29:47
【问题描述】:

有一个以日期时间列作为索引的 Pandas 数据框。

time                    open     high      low    close  weekday                                        
2000-05-30 17:00:00  0.93020  0.93050  0.92970  0.92970        1
2000-05-30 18:00:00  0.92980  0.93000  0.92960  0.92960        1
2000-05-30 19:00:00  0.92970  0.93050  0.92930  0.93050        1

我创建了新列“工作日”

df['weekday'] = df.index.dayofweek

如何创建一个包含每个月内每个工作日数的新列? 即 2000-05-01 是 5 月的第 1 个星期一,2000-05-08 是 5 月 2 日,等等......

【问题讨论】:

  • df.index.day 是一个月中的哪一天 (0 - 31) df.index.weekday 是你的一天是 MF 还是 SU (0 或 1) df.index.dayofweek 是从周一 (0) 到周日 (6) 您的问题是同时询问“工作日”和“月中的某天”pandas.pydata.org/pandas-docs/stable/reference/api/…

标签: python pandas dataframe time-series


【解决方案1】:

只需要将天数除以 7。 如果除法余数大于 0,则除法结果必须加 1。 例如,2021 年 2 月 9 日。将 9 除以 7。除法的余数不为 0。除法的结果为 1。加 1。所以 02/09/2020 是 2 月的第二个星期二。

【讨论】:

    【解决方案2】:

    如果您的时间列是日期时间数据类型,那么

    df['weekday'] = df['time'].dt.day_of_week
    

    如果没有,那么先这样做

    df['time'] = pd.to_datetime(df['time'])
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-24
      • 2020-08-12
      • 1970-01-01
      相关资源
      最近更新 更多