python - 如何比较熊猫中的字符串和日期时间?
问题描述
我收到以下错误TypeError: unsupported operand type(s) for &: 'str' and 'DatetimeArray'
,我想检查“Resumo”列中的值是否等于“Transfêrencia”并检查日期比较。
但是使用“np.select”我得到一个错误,因为数据类型。
我怎样才能做到这一点?
>>>df
Resumo Scan DHR_ULT_ATUALIZACAO DT_PREVISAO
Transferência 2021-07-20 09:00:00 2021-07-16 00:00:00
Transferência 2021-07-16 08:00:00 2021-07-16 00:00:00
Transferência 2021-07-20 16:00:00 2021-07-19 00:00:00
conditions = [ df["Prazo"]=="No prazo",
df["Resumo"]=="Coleta",
df["Resumo"]=="Hub",
df["Resumo"]=="Transbordo",
(df["Resumo"]=="Transferência" & pd.to_datetime(df["DHR_ULT_ATUALIZACAO"], format=("%Y-%m-%d %H:%M:%S")) > pd.to_datetime(df["DT_PREVISAO"], format=("%Y-%m-%d %H:%M:%S")))
]
choices = [ "No prazo",
"Coleta",
"Hub",
"Falta",
"Transferência¹"
]
df["Desvios"] = np.select(conditions, choices, default = "Entregues")
解决方案
如果先将 datelike 列转换为 datetime 会更容易:
df["DHR_ULT_ATUALIZACAO"]=pd.to_datetime(df["DHR_ULT_ATUALIZACAO"], format=("%Y-%m-%d %H:%M:%S"))
df["DT_PREVISAO"]=pd.to_datetime(df["DT_PREVISAO"], format=("%Y-%m-%d %H:%M:%S"))
将您的最后一个条件括在括号中:
conditions = [df["Prazo"]=="No prazo",
df["Resumo"]=="Coleta",
df["Resumo"]=="Hub",
df["Resumo"]=="Transbordo",
((df["Resumo"]=="Transferência") & (df["DHR_ULT_ATUALIZACAO"] > df["DT_PREVISAO"]))
]
#^added bracket ^added bracket
推荐阅读
- javascript - 点击汉堡菜单后看不到我的文字
- java - 为什么是 !在docker上spring-boot应用程序的属性文件路径中?
- json - 如何使用 java 1.8 从存储在数据库中的 JSON 为 Spring Batch 应用程序创建动态步骤?因此,这些步骤将在作业启动后创建
- c# - 有没有办法在 C# 中拥有一个既是输入又是输出的存储过程参数?
- c# - 代码优先:同一实体的一对多关系
- version-control - 是否有版本控制或远程部署程序,或两者的组合可以为我提供所需的功能?
- python - 如何将图像的像素值分配给 Python 中的数组
- r - R:无法为多元正态性运行 shapiro-wilk 检验
- vb.net - 我将如何为 Visual Studio 选择一个特定的文件路径来读取和写入除调试文件夹之外的其他文件
- javascript - 如何将 Laravel 表中的多个复选框保存到数据库中?