2017-02-28 88 views
2

我有一個數據幀:提取周(Python的熊貓)

time   year month 
0 12/28/2013 0:17 2013 12 
1 12/28/2013 0:20 2013 12 
2 12/28/2013 0:26 2013 12 
3 12/29/2013 0:20 2013 12 
4 12/29/2013 0:26 2013 12 
5 12/30/2013 0:31 2013 12 
6 12/30/2013 0:31 2013 12 
7 12/31/2013 0:17 2013 12 
8 12/31/2013 0:20 2013 12 
9 12/31/2013 0:26 2013 12 
10 1/1/2014 4:30 2014 1 
11 1/1/2014 4:34 2014 1 
12 1/1/2014 4:37 2014 1 
13 1/2/2014 4:30 2014 1 
14 1/2/2014 5:30 2014 1 
15 1/3/2014 4:30 2014 1 
16 1/3/2014 4:34 2014 1 
17 1/3/2014 4:37 2014 1 
18 1/4/2014 4:30 2014 1 
19 1/4/2014 4:34 2014 1 
20 1/4/2014 4:37 2014 1 

我用下面的代碼來提取星期信息:

df['week'] = df['time'].dt.week 

這使得數據幀如下:

time    year month week 
0 2013-12-28 00:17:00 2013 12 52 
1 2013-12-28 00:20:00 2013 12 52 
2 2013-12-28 00:26:00 2013 12 52 
3 2013-12-29 00:20:00 2013 12 52 
4 2013-12-29 00:26:00 2013 12 52 
5 2013-12-30 00:31:00 2013 12 1 
6 2013-12-30 00:31:00 2013 12 1 
7 2013-12-31 00:17:00 2013 12 1 
8 2013-12-31 00:20:00 2013 12 1 
9 2013-12-31 00:26:00 2013 12 1 
10 2014-01-01 04:30:00 2014 1 1 
11 2014-01-01 04:34:00 2014 1 1 
12 2014-01-01 04:37:00 2014 1 1 
13 2014-01-02 04:30:00 2014 1 1 
14 2014-01-02 05:30:00 2014 1 1 
15 2014-01-03 04:30:00 2014 1 1 
16 2014-01-03 04:34:00 2014 1 1 
17 2014-01-03 04:37:00 2014 1 1 
18 2014-01-04 04:30:00 2014 1 1 
19 2014-01-04 04:34:00 2014 1 1 
20 2014-01-04 04:37:00 2014 1 1 

我想創建另一列顯示年度周(例如,2013-52,2014-1)。問題是,當我將第5到第9行的兩列(年份,星期)合併時,2013-1的結果是2013年的第一週。這是不正確的。有沒有解決這個問題的方法?

+0

這似乎是正確的 - https://en.wikipedia.org/wiki/ISO_week_date#Last_week – TrigonaMinima

回答

3

使用dt.strftime
參考http://strftime.org/

df.time.dt.strftime('%Y-%W') 

0  2013-51 
1  2013-51 
2  2013-51 
3  2013-51 
4  2013-51 
5  2013-52 
6  2013-52 
7  2013-52 
8  2013-52 
9  2013-52 
10 2014-00 
11 2014-00 
12 2014-00 
13 2014-00 
14 2014-00 
15 2014-00 
16 2014-00 
17 2014-00 
18 2014-00 
19 2014-00 
20 2014-00 
Name: time, dtype: object 
+0

它可以很好地。謝謝! – kevin

+0

@kevin很高興我能幫到你 – piRSquared

0

正如@TrigonaMinima指出的,一年中的第一週,通過ISO 8601(其dt.week如下)中所定義:

它是第一個星期的天其在大多數(4個或更多) 月

在你的情況,一週= 1在12月2日天,月休息,從而擬合第一週的定義。