Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 从日期时间提取周数(Python)_Python 2.7_Pandas - Fatal编程技术网

Python 2.7 从日期时间提取周数(Python)

Python 2.7 从日期时间提取周数(Python),python-2.7,pandas,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 2

我有一个数据帧:

    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年的第一周。这是不对的。这个问题有什么解决办法吗?

正如@TrigonaMinima所指出的,ISO 8601定义的一年中的第一周(如下所示):

这是第一个星期的大多数天(4天或更多天)在 一月


在您的例子中,week=
1
在12月有2天,其余的在1月,因此符合第一周的定义。

使用
dt.strftime

参考文献


这似乎是正确的-@凯文很高兴我能帮上忙
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