[英]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
上映射27
, 27
類推; 以及53
上的25
和52
上的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.