python - Python / Pandas / 数据框 / 计算日期差
问题描述
我有一个数据框,我正在执行以下操作:
def calculate_planungsphase(audit, phase1, phase2):
datum_first_milestone = data_audit[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase1)]
datum_second_milestone = data_audit[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase2)]
print(datum_first_milestone['GeplantesErledigungsdatum'])
print(datum_second_milestone['GeplantesErledigungsdatum'])
print(datum_first_milestone['GeplantesErledigungsdatum'] - datum_second_milestone['GeplantesErledigungsdatum'])
print(datum_first_milestone['GeplantesErledigungsdatum']) 的结果 =
2018-01-01 名称:GeplantesErledigungsdatum,数据类型:datetime64[ns]
print(datum_second_milestone['GeplantesErledigungsdatum']) 的结果 =
2018-01-02 名称:GeplantesErledigungsdatum,数据类型:datetime64[ns]
差值计算结果为:
0 NaT 1 NaT 名称:GeplantesErledigungsdatum,数据类型:timedelta64[ns
为什么计算的结果是NaT?当我只做一个计算时,为什么我有两个结果?(索引 0 和索引 1 = NaT)
感谢您的帮助!
解决方案
存在不同索引值的问题,因此在减法Series
中未对齐。
如果两个 filters 的大小相同,可能的解决方案Series
是创建相同的索引值:
datum_first_milestone.index = datum_second_milestone.index
loc
如果需要仅按+过滤列,则解决方案也应简化column name
:
datum_first_milestone = data_audit.loc[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase1), 'GeplantesErledigungsdatum']
datum_second_milestone = data_audit.loc[(data_audit.Audit == audit) & (data_audit.Meilenstein == phase2), 'GeplantesErledigungsdatum']
print(datum_first_milestone)
print(datum_second_milestone)
如果总是返回一个值,则Series.item
返回标量:
print (datum_first_milestone.item() - datum_second_milestone.item())
更一般地说,如果可能有一个或多个值,请为标量选择第一个值:
print (datum_first_milestone.iat[0] - datum_second_milestone.iat[0])
推荐阅读
- r - 我如何处理'to'必须是长度为1的错误?
- javascript - 我对带有逗号小数分隔符的数字有疑问
- typescript - 打字稿:在将可选类型与所需类型合并时创建联合而不是交集
- sql - WPDB 查询 双查询最干净的方法是什么?
- spring-boot - 在 Spring Boot 中使用带盐的 shapassword 编码
- python - 允许 pickle 得到多个 agruments
- java - 如何在keycloak中动态编辑standalone.xml文件
- php - 如何使用外键将多个查询插入到不同的表中
- solr - 在 SOLR 中接受和管理相同的文档
- python - 如何在 Python 中将字典列表的值从字符串转换为浮点数