我是python的新手,正尝试使用pandas DataFrame中的某些datetime列。两个变量'EndDate'
和'StartDate'
是日期时间类型,并且相减后具有负值,表示数据无效。
我正在尝试查找这些有问题的行并将其从整个数据集中删除,并且可能会以错误的方式进行处理。
我尝试使用timedelta来查找总天数小于0的地方,该方法无法以这种方式工作。
有人有办法吗?
任何帮助将不胜感激。谢谢
答案 0 :(得分:2)
您要导入timedelta
,而不是datetime
模块。只需使用timedelta
而不是datetime.timedelta
。代码中的datetime
指的是您也导入的datetime
类 ,而不是datetime
模块。
导入from ... import X
时,您在代码中将其称为X
。
当您仅import Y
(整个模块)时,您进行Y.Z
以访问其成员。
答案 1 :(得分:1)
由于您使用的是熊猫:请勿使用标准库中的datetime
,请使用熊猫对象和方法。
# convert series to Pandas datetime if not already done so
date_cols = ['StartDate', 'EndDate']
energy[date_cols] = energy[date_cols].apply(pd.to_datetime, errors='coerce')
# construct Boolean mask and filter dataframe
mask = energy['EndDate'] >= energy['StartDate']
energy = energy.loc[mask]