我有一个带有日期时间的数据框
dates = pd.date_range('9/25/2010', periods=10, freq='D')
df = pd.DataFrame({'col':dates})
df['col']=pd.to_datetime(df['col'])
df['dow'] = df.col.dt.dayofweek
df['week'] = df.col.dt.to_period('W')
df['week_alt']=df.col.dt.year.astype(str) + '-w' + df.col.dt.week.astype(str)
df
Out[21]:
col dow week week_alt
0 2010-09-25 5 2010-09-20/2010-09-26 2010-w38
1 2010-09-26 6 2010-09-20/2010-09-26 2010-w38
2 2010-09-27 0 2010-09-27/2010-10-03 2010-w39
3 2010-09-28 1 2010-09-27/2010-10-03 2010-w39
4 2010-09-29 2 2010-09-27/2010-10-03 2010-w39
5 2010-09-30 3 2010-09-27/2010-10-03 2010-w39
6 2010-10-01 4 2010-09-27/2010-10-03 2010-w39
7 2010-10-02 5 2010-09-27/2010-10-03 2010-w39
8 2010-10-03 6 2010-09-27/2010-10-03 2010-w39
9 2010-10-04 0 2010-10-04/2010-10-10 2010-w40
在这里您可以看到一周开始于Monday
并结束于Sunday
.
我想控制一周的开始时间。例如,如果现在每周从星期日开始,那么2010-09-26
将会2010-w39
and 2010-10-03
be 2010-w40
.
我怎样才能在熊猫中做到这一点?
UPDATE:您可以在以下三个 UNIX 修饰符之间进行选择:%U
,%V
,%W
:
%U一年中的周数,星期日为一周的第一天 (00..53)。
%VISO 周编号,星期一为一周的第一天 (01..53)。
%W一年中的周数,星期一为一周的第一天 (00..53)。
In [189]: df.col.dt.strftime('%U-%V-%W')
Out[189]:
0 38-38-38
1 39-38-38
2 39-39-39
3 39-39-39
4 39-39-39
5 39-39-39
6 39-39-39
7 39-39-39
8 40-39-39
9 40-40-40
Name: col, dtype: object
%U
一年中的周数,星期日为一周的第一天 (00..53)。
In [190]: df.col.dt.strftime('%Y-w%U')
Out[190]:
0 2010-w38
1 2010-w39
2 2010-w39
3 2010-w39
4 2010-w39
5 2010-w39
6 2010-w39
7 2010-w39
8 2010-w40
9 2010-w40
Name: col, dtype: object
%V
ISO 周编号,星期一为一周的第一天 (01..53)。
In [191]: df.col.dt.strftime('%Y-w%V')
Out[191]:
0 2010-w38
1 2010-w38
2 2010-w39
3 2010-w39
4 2010-w39
5 2010-w39
6 2010-w39
7 2010-w39
8 2010-w39
9 2010-w40
Name: col, dtype: object
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)