【发布时间】:2020-05-03 10:45:18
【问题描述】:
您好,我有以下数据:
索引、星期几、星期编号、Fecha
360 Friday 52 2019-12-27
361 Saturday 52 2019-12-28
362 Sunday 53 2019-12-29
363 Monday 53 2019-12-30
364 Tuesday 53 2019-12-31
365 Wednesday 1 2020-01-01
366 Thursday 1 2020-01-02
367 Friday 1 2020-01-03
368 Saturday 1 2020-01-04
369 Sunday 2 2020-01-05
370 Monday 2 2020-01-06
我想要:
- 包含 1 月 1 日的那一周是第 1 周
- 星期天开始
- 将第 1 周作为 7 天的整周,这意味着 12 月 29 日、30 日和 31 日也将获得第 1 周。
- 当我在这个数据集中有很多年的时间时,也可以让它工作。
在这个特定的年份,这意味着将所有 53 都更改为 1,但我认为其他年份这可能行不通。所以为了得到一个一般规则,我意识到如果 1 月 1 日是星期天,我不需要改变任何东西,所以我想首先检查每年的情况,如果 1 月 1 日不是星期天将前一个星期日和那个星期天之间的所有周数更改为 1。我想到的另一个选择是找出前一个星期日的第几周没有,然后将那一年的所有周数更改为与前一个星期日相同的数字,为 1。
对于这两种情况,我都需要在 df 中执行一个条件以仅过滤掉某些行,但是当我只想显示该 df 的一列时,我该怎么做?意思是如果我会这样做:
totals[(totals['Fecha'].dt.month==1) & (totals['Fecha'].dt.day==1) & (totals['Fecha'].dt.year==i)]
然后这将显示所有列的总数,而我想要这些条件并且只看到“工作日”列。
那么我该怎么做呢,而且,这对我来说听起来超级复杂。有没有我忽略的更简单/更有效的方法?
谢谢!
【问题讨论】:
标签: python pandas conditional-statements week-number