python - 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 可与布尔运算符一起使用
问题必须存在于与日期时间值的布尔交互中
有人可以解释一下我不正确理解的内容吗?
解决方案
if 'date' < '2019-04-01':
这比较两个字符串。您发布的代码中没有任何内容引用数据框。
有关将日期转换为季度的信息,请参见此处。关键的电话是
pd.PeriodIndex(df.date, freq='Q')
推荐阅读
- centos - 如何在 centOs 服务器上查看单个 html 页面
- php - jQuery Datatables 服务器端处理无结果返回
- angular - 接口的最佳实践
- java - Can I call a .java file from a .html file with href or something else without using javascript in-between
- certificate - 如何将证书链添加到 java 密钥库?
- ios - 我的自定义 UIView 没有从 SuperView 中删除
- javascript - 为什么在本机反应中自动调用 setInterval
- tensorflow - tensorflow嵌套训练,如何实现
- node.js - 如何在 Schema 中发布 Schema 数组?
- sql - postgresql 检查是否存在性能良好的 json 值,例如:index