Datetime in pandas dataframe will not subtract from each other
我正在尝试以日期时间格式查找pandas数据框中两列之间的时间差异。
下面是我的数据框中的一些数据以及我一直在使用的代码。我已经三重检查了这两列dtypes是否为datetime64。
我的数据:
1 2 3 | 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 |
我的代码:
1 2 3 4 5 | 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'] |
我收到的错误消息:
1 | TypeError: data type"datetime" not understood |
任何帮助将不胜感激,谢谢!
我的解决方案:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | 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 |
我使用上述语法遇到了相同的错误(虽然在另一台计算机上工作):
1 | data['Diff'] = data['date_updated'] - data['date_scored'] |
它在我的新机器上可以通过以下方式工作:
1 | data['Diff'] = data['date_updated'].subtract(data['date_scored']) |
您需要更新pandas。
我只是遇到了以前运行时没有问题的旧代码所遇到的同一问题。
将pandas(0.18.1-np111py35_0)更新到较新版本(0.20.2-np113py35_0)后,此问题已解决。
它就像一个护身符。您甚至可以简化代码,因为
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import io import pandas as pd # Paste the text by using of triple-quotes to span String literals on multiple lines zz ="""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 = pd.read_table(io.StringIO(zz), delim_whitespace=False, delimiter=',') data['date_updated'] = pd.to_datetime(data['date_updated']) data['date_scored'] = pd.to_datetime(data['date_scored']) data['Diff'] = data['date_updated'] - data['date_scored'] print(data) # date_updated date_scored Diff # 0 2016-03-30 08:00:00 2016-03-30 08:00:57.416 -1 days +23:59:02.584000 # 1 2016-04-07 23:50:00 2016-04-07 23:50:12.036 -1 days +23:59:47.964000 |