从日期时间中提取周(Python Pandas)

kev*_*vin 5 python-2.7 pandas

我有一个数据框:

    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
Run Code Online (Sandbox Code Playgroud)

我使用以下代码来提取星期信息:

df['week'] = df['time'].dt.week
Run Code Online (Sandbox Code Playgroud)

这使得数据框如下:

    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
Run Code Online (Sandbox Code Playgroud)

我想创建另一个显示年周的列(例如,2013-52、2014-1)。问题是,当我将第 5 行到第 9 行中的两列(年、周)合并时,结果是 2013-1,表示 2013 年的第一周。这是不正确的。这个问题有什么解决办法吗?

piR*_*red 6

使用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
Run Code Online (Sandbox Code Playgroud)