首页 > 解决方案 > Pandas - 布尔值条件语句未在函数中拾取

问题描述

蟒蛇新手。

我有一个数据集,其中包含格式为 yyyy-mm-dd (%Y%m%d) 作为 datetime64 类型的日期列。该数据集跨越 2019-2020 年的 2 年。我正在尝试编写一个根据日期添加季度的函数。我无法让 if 语句识别数据,所以一切都以“Q42020”的形式返回,我不明白为什么。

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')  

我的理解:

if/elif/else 语句运行直到满足条件,然后停止运行

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

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

有人可以解释一下我不正确理解的内容吗?

标签: pythonpandas

解决方案


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

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

有关将日期转换为季度的信息,请参见此处。关键的电话是

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

推荐阅读