【发布时间】:2020-10-05 04:42:08
【问题描述】:
我正在尝试调整我的数据框以查找季度至今 (QTD) 行。在下面的数据中,我的年份从 2 月开始,所以当我说 QTD 时,我的意思如下:
Quarter Months
1 Feb, Mar, Apr
2 May, Jun, Jul
3 Aug, Sep, Oct
4 Nov, Dec, Jan
Sample Dataframe:
Quarter Month Data Value
1 1 A 100
1 2 B 134
1 3 C 145
2 4 D 156
2 5 E 167
2 6 F 178
3 7 G 123
3 8 H 112
3 9 I 187
4 10 J 132
4 11 K 109
4 12 L 121
对于当前情况,假设我的当前月份是 9 月,已过滤的数据应仅包含 8 月至 9 月的行。
我可以使用下面的函数来确定季度,但这需要从一月份开始。
def current_quarter(dt):
prev_quarter_map = ((4, -1), (1, 0), (2, 0), (3, 0))
quarter, yd = prev_quarter_map[(dt.month - 1) // 3]
return (quarter)
有没有办法只过滤从当前季度开始到当月结束的那些行?
【问题讨论】:
-
您的 current_quarter() 错误地为
current_quarter(datetime.fromisoformat('2020-03-28'))提供 4。我弄错了吗? -
@BillHuang :不,我刚刚意识到,该功能没有按预期工作。致力于此
-
此外,我不知道您想要采用什么输入(日期?数据框?还是没有,只为每一行输入?),以及预期的输出是什么(一个数据框?还是每行一个数据框?)。你能详细说明一下吗?否则不可行....
-
另外,有年份栏吗?或者数据已经按时间顺序排序了?否则,对于 1 月,可能无法区分“今年”和“去年”的 12 月的数据......
-
此函数的输入将是
datetime.date(2015, 1, 13)格式的日期。获得所需的输出后,我可以使用它来过滤数据框。例如,数据框将仅包含该财政年度 2 月至 1 月的数据。它不会有任何前一年的数据
标签: python pandas dataframe datetime