首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >卡在数据帧查询上

问卡在数据帧查询上
EN

Stack Overflow用户
提问于 2022-04-26 05:52:28
回答 1查看 51关注 0票数 0

我正在进行一个项目,在该项目中,我在数据帧中导入SQLite数据库,然后使用以下方法将字符串日期转换为日期

代码语言:javascript
复制
toCorrect = ["dt_ocurred", "init_action_ship_dt","target_dt", "final_action_ship_dt", "done_dt",
                      "update_dt", "ext_dt", "PSC_picdt", "PSC_info2ownr_dt", "PSC_info2chrtr_dt", "PSC_info2rtshp_dt",
                      "PSC_info2oilmaj_dt", "PSC_info2mmstpmgmt_dt", "PSC_sndr_offimport_dt"]#
        for someCol in toCorrect:
            df_data[someCol] = pd.to_datetime(df_data[someCol],errors='coerce').apply(lambda x: x.date())

转换完成后,我将尝试获取当前年份的数据,其中我有以下查询

代码语言:javascript
复制
curr_year = datetime.datetime.now().year
    
    df_currDRS = df_rawData.query(
        f"ship_name == '{shipName}' and (dt_ocurred.str.contains('{curr_year}') or done_dt.str.contains"
        f"('{curr_year}') or status.str.contains('OPEN'))", engine='python')

由于某种原因,我搞不懂这个错误。

代码语言:javascript
复制
 AttributeError: Can only use .str accessor with string values!
Traceback:
File "c:\users\sshukla\documents\drs2022\venv\lib\site-packages\streamlit\scriptrunner\script_runner.py", line 443, in _run_script
    exec(code, module.__dict__)
File "C:\Users\sshukla\Documents\DRS2022\main.py", line 22, in <module>
    make_NewDRS()
File "C:\Users\sshukla\Documents\DRS2022\GetNewDRS.py", line 39, in make_NewDRS
    df_currDRS = df_rawData.query(
File "c:\users\sshukla\documents\drs2022\venv\lib\site-packages\pandas\core\frame.py",

如果不将字符串日期转换为date对象,则查询运行良好。但是,如果日期已经从字符串转换到日期,我想知道如何构造查询。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-27 06:19:26

如果要筛选给定年份(例如2022年)的日期列,可以检查它是否介于一年的第一天和最后一天之间:

代码语言:javascript
复制
df.query(f"20220101 <= my_date <= 20221231")

应用于您的代码示例,如下所示:

代码语言:javascript
复制
curr_year = datetime.datetime.now().year
    
df_currDRS = df_rawData.query(
    f"ship_name == '{shipName}' and ("
    f"({curr_year}0101 <= dt_ocurred <= {curr_year}1231) or "
    f"({curr_year}0101 <= done_dt <= {curr_year}1231) or "
    f"status.str.contains('OPEN'))", engine='python')
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72008984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档