簡體   English   中英

從python datetime中提取星期並獲取序列號?

[英]Extracting the week from python datetime and getting the serial number?

我有一個數據列,其列名訂購日期包含2014年7月至2015年6月的日期,格式為2014-10-17 15:11:54。 我使用datetime從日期中提取了星期數。 但是,我將2014年7月的起始周定為27,而將2015年1月的起始周定為第1周。我想要的是2014年7月,因為第1周持續到2015年6月,結束時是53。

df['Week'] = df.order_date.dt.week 

使用上面的代碼獲取之后的星期數,以獲取2014年7月使用的第1周

def time_period(x):
    if df.Week >= 26:
        return df.Week -25
    else:
        return df.Week +28
df['week_serial'] = df.Week.apply(lambda x: time_period(x))

這給出了一個錯誤-系列的真值不明確。 使用a.empty,a.bool(),a.item(),a.any()或a.all()。

好吧,由於df.Week已包含星期數,因此該函數應如下所示:

def time_period(x):
    if x >= 26:
        return x-25
    else:
        return x+28

但是我認為您基本上是在尋找模運算:

df['week_serial'] = (df['Week'] + 27) % 53 + 1

這將在1上映射26 ,在2上映射2727類推; 以及53上的2552上的24等。

因此,對於示例輸入:

>>> df
   Week
0    13
1    49
2    47
3    12
4    35
5    17
6     1
7    46
8    19
9     0

我們獲得:

>>> (df['Week'] + 27) % 53 + 1
0    41
1    24
2    22
3    40
4    10
5    45
6    29
7    21
8    47
9    28
Name: Week, dtype: int64

鑒於您已經具有datetime.datetime對象,使用它們可能是最簡單的。

首先,定義您的開始日期。

In [1]: import datetime

In [2]: start  = datetime.datetime(2014, 7, 1)
Out[2]: datetime.datetime(2014, 7, 1, 0, 0)

然后確定每個日期和開始之間的時間timedelta ,並將其轉換為幾天然后幾周。

In [3]: (datetime.datetime(2015, 3, 24) - start).days
Out[3]: 266

In [4]: (datetime.datetime(2015, 3, 24) - start).days // 7 + 1
Out[4]: 39

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM