【发布时间】:2017-11-19 21:50:43
【问题描述】:
我正在尝试以日期时间格式查找 pandas 数据框中两列之间的时间差异。
以下是我的数据框中的一些数据和我一直在使用的代码。我已经三重检查了这两列 dtypes 是 datetime64。
我的数据:
date_updated date_scored
2016-03-30 08:00:00.000 2016-03-30 08:00:57.416
2016-04-07 23:50:00.000 2016-04-07 23:50:12.036
我的代码:
data['date_updated'] = pd.to_datetime(data['date_updated'],
format='%Y-%m-%d %H:%M:%S')
data['date_scored'] = pd.to_datetime(data['date_scored'],
format='%Y-%m-%d %H:%M:%S')
data['Diff'] = data['date_updated'] - data['date_scored']
我收到的错误信息:
TypeError: data type "datetime" not understood
任何帮助将不胜感激,谢谢!
我的解决方案:
for i in raw_data[:10]:
scored = i.date_scored
scored_date = pd.to_datetime(scored, format='%Y-%m-%d %H:%M:%S')
if type(scored_date) == "NoneType":
pass
elif scored_date.year >= 2016:
extracted = i.date_extracted
extracted = pd.to_datetime(extracted, format='%Y-%m-%d %H:%M:%S')
bank = i.bank.name
diff = scored - extracted
datum = [str(bank), str(extracted), str(scored), str(diff)]
data.append(datum)
else:
pass
【问题讨论】:
-
你用的是什么版本的熊猫?另外,您确定要减去单个日期吗?您的代码建议您减去 DateTimeIndex 对象,在这种情况下
data['date_updated'].difference(data['date_scored'])会更好 -
对我来说工作得很好......另外,我认为你不需要
format参数。 pandas 会找出这种格式。 -
我删除了格式参数并将字符串很好地转换为日期时间格式,但是在运行包含实际减法的最后一行代码时,我仍然得到 TypeError: data type "datetime" not理解...
-
使用代码时:data['date_updated'].difference(data['date_scored']) 我收到以下错误:AttributeError: 'Series' object has no attribute 'difference'
-
感谢您回复我。对我来说,我必须卸载 numpy,然后使用 .whl 文件再次安装。如果他们将来看到这一点,它可能会帮助其他人。 lfd.uci.edu/~gohlke/pythonlibs
标签: python pandas datetime subtraction