【问题标题】:Assign Week Number beginning at 1 based on Dates starting in November根据 11 月开始的日期分配从 1 开始的周数
【发布时间】:2020-10-21 20:35:33
【问题描述】:

我有一个日期列,日期从 11 月份开始。下面是一个示例:

| dt         |
|------------|
| 11/13/2017 |
| 11/13/2017 |
| 11/13/2017 |
| 11/13/2017 |
| 11/20/2017 |
| 11/20/2017 |
| 11/27/2017 |
| 11/27/2017 |
| 11/27/2017 |
| 12/4/2017  |
| 12/11/2017 |
| 12/18/2017 |
| 12/18/2017 |
| 12/25/2017 |
| 1/1/2018   |
| 1/8/2018   |

我想从日期中获取周数,但周数应该是 1 表示 2017 年 11 月 13 日,2 表示 11/20/2017 并且会继续增加直到 2018 年 1 月 8 日。如何在 Python 中实现这一点?

【问题讨论】:

    标签: python pandas python-datetime week-number


    【解决方案1】:

    你可以这样做:

    df['week'] = (df['dt'] - df['dt'].min())//pd.to_timedelta('7D') + 1
    

    输出:

               dt  week
    0  2017-11-13     1
    1  2017-11-13     1
    2  2017-11-13     1
    3  2017-11-13     1
    4  2017-11-20     2
    5  2017-11-20     2
    6  2017-11-27     3
    7  2017-11-27     3
    8  2017-11-27     3
    9  2017-12-04     4
    10 2017-12-11     5
    11 2017-12-18     6
    12 2017-12-18     6
    13 2017-12-25     7
    14 2018-01-01     8
    15 2018-01-08     9
    

    【讨论】:

      【解决方案2】:

      让我们这样做,PS 只是不要将您的列命名为 dt ,因为 dt 是来自 pandas 的函数

      ((df['dt']-df['dt'].min())//7).dt.days+1
      Out[300]: 
      0     1
      1     1
      2     1
      3     1
      4     2
      5     2
      6     3
      7     3
      8     3
      9     4
      10    5
      11    6
      12    6
      13    7
      14    8
      15    9
      Name: dt, dtype: int64
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-01-11
        • 1970-01-01
        • 1970-01-01
        • 2021-01-07
        • 2022-06-29
        • 2012-09-22
        • 1970-01-01
        相关资源
        最近更新 更多