Kar*_*tik 4 python date pandas
我有一个熊猫数据框,其列的日期如下:
DATE
01/16/2017
01/17/2017
01/18/2017
01/19/2017
01/20/2017
Run Code Online (Sandbox Code Playgroud)
我需要将这些日期中的每个日期转换为周末日期,该日期是该对应星期的星期五的日期。因此,添加一个新列,生成一个如下所示的数据框:
DATE WEEK_ENDING
01/16/2017 01/20/2017
01/17/2017 01/20/2017
01/18/2017 01/20/2017
01/19/2017 01/20/2017
01/20/2017 01/20/2017
Run Code Online (Sandbox Code Playgroud)
本质上,我正在寻找有关此问题的熊猫解决方案,以 获取日期为本周结束的星期五
日期本身的格式并不那么重要。有内置的功能可以做到这一点,还是我必须编写一个?谢谢!
您可以使用内置的DateOffsets实现此目的:
In [310]:
from pandas.tseries.offsets import *
df['WEEK ENDING'] = df['DATE'] + Week(weekday=4)
df
Out[310]:
DATE WEEK ENDING
0 2017-01-16 2017-01-20
1 2017-01-17 2017-01-20
2 2017-01-18 2017-01-20
3 2017-01-19 2017-01-20
4 2017-01-20 2017-01-27
Run Code Online (Sandbox Code Playgroud)
请注意,从技术上讲,因为最后一天会延续到下一周,所以您还需要先使用以下命令将日期字符串转换为日期时间pd.to_datetime:
df['DATE'] = pd.to_datetime(df['DATE'])
Run Code Online (Sandbox Code Playgroud)
您可以通过测试,如果算出偏移相同减去一个星期,使用原始数据修复的最后一行where:
In [316]:
from pandas.tseries.offsets import *
df['WEEK ENDING'] = df['DATE'].where( df['DATE'] == (( df['DATE'] + Week(weekday=4) ) - Week()), df['DATE'] + Week(weekday=4))
df
Out[316]:
DATE WEEK ENDING
0 2017-01-16 2017-01-20
1 2017-01-17 2017-01-20
2 2017-01-18 2017-01-20
3 2017-01-19 2017-01-20
4 2017-01-20 2017-01-20
Run Code Online (Sandbox Code Playgroud)
在这里它使最后一行保持不变