Pandas-函数中未拾取布尔值条件语句



python新手。

我有一个数据集,其中包含一个日期列,格式为yyyy-mm-dd(%Y%m%d(,为datetime64类型。数据集跨度为2019-2020年2年。我正在尝试编写一个函数,根据日期添加季度。我无法获得if语句来识别数据,所以所有内容都返回到"2020年第4季度",我不明白为什么。

def applyquarter(x):
if 'date' < '2019-04-01':
return('Q12019')
elif 'date' < '2019-07-01':
return('Q22019')
elif 'date' < '2019-10-01':
return('Q32019')
elif 'date' < '2020-01-01':
return('Q42019')
elif 'date' < '2020-04-01':
return('Q12020')
elif 'date' < '2020-07-01':
return('Q22020')
elif 'date' < '2020-10-01':
return('Q32020')
else: 
return('Q42020')  

我的理解:

如果/elif/else语句一直运行到满足条件,则停止运行

datetime64可以与布尔运算符一起使用

问题一定存在于与日期时间值的布尔交互中

有人能解释一下我理解不正确的地方吗?

if 'date' < '2019-04-01':

这将比较两个字符串。发布的代码中没有任何内容使对数据帧有任何引用。

请参阅此处将日期转换为季度。关键呼叫是

pd.PeriodIndex(df.date, freq='Q')

我有一个解决方案

date2check=date.today()
dd=((date2check - pd.offsets.QuarterBegin(startingMonth=4))).date()
if dd.month//3 !=0:
qtrnum =dd.month//3
yy=dd.year
else:
qtrnum =4
yy=dd.year - 1
qname = "Q"+str(qtrnum)+str(yy)
qname

输出:

'Q42020'

最新更新