强制日期/日期时间最接近星期五的Python熊猫

时间:2019-09-21 12:49:37

标签: python pandas datetime

我有一个带有交易数据的熊猫数据框,每个交易都有一个与之关联的日期。交易可以在一周的任何一天进行,但是我想将日期强制为同一周的星期五。换句话说,星期二日期(9-17-2019)将显示为9-20-2019。我想我之前已经做过,但是a)不记得如何b)不知道它是否最简单/最有效。

感谢您的帮助-此处是Python初学者。

1 个答案:

答案 0 :(得分:1)

假设您的DataFrame( df ):

  • Dat 列中有来源日期,
  • 当前星期五日期应保存在 Dat2 列中,

执行:

df['Dat2'] = df.Dat + pd.offsets.Week(n=0, weekday=6) - pd.DateOffset(2)

详细信息:

  • + pd.offsets.Week(n=0, weekday=6)-移至最近的星期日 ( weekday = 6 ),但是如果当前工作日已经是星期日,则无变化 发生。
  • - pd.DateOffset(2)-向后移2天。

测试:在2019年9月的最初几天中,结果是:

          Dat       Dat2
0  2019-09-01 2019-08-30
1  2019-09-02 2019-09-06
2  2019-09-03 2019-09-06
3  2019-09-04 2019-09-06
4  2019-09-05 2019-09-06
5  2019-09-06 2019-09-06
6  2019-09-07 2019-09-06
7  2019-09-08 2019-09-06
8  2019-09-09 2019-09-13
9  2019-09-10 2019-09-13
10 2019-09-11 2019-09-13
11 2019-09-12 2019-09-13
12 2019-09-13 2019-09-13
13 2019-09-14 2019-09-13
14 2019-09-15 2019-09-13
15 2019-09-16 2019-09-20

所以:

  • 2019-09-01 (星期天)移至(后退)到 2019-08-30
  • 对于下一个周末(2-8.09),当前星期五是 2019-09-06

以此类推。