我有一个这样的数据框:
A B C Date
2 3 6 03/19/2012 2:33:34.270103 PM
4 8 2 03/19/2012 2:33:34.270308 PM
...
6 2 0 03/19/2012 2:34:04.611729 PM
所以我需要计算“日期”列中最后一个元素和第一个元素之间的时差。
我需要以秒为单位的时差(10/21/2014 2:34:04.611729 PM) - (03/19/2012 2:33:34.270103 PM) = ANSWER to print out
此外,我的日期格式如上所示。有什么想法吗?
答案 0 :(得分:2)
首先使用Date
方法将to_datetime
系列转换为日期时间,然后从那里进行简单的计算。
In [24]: df = pd.read_csv("test.csv")
In [25]: df['Date'] = pd.to_datetime(df['Date'])
In [26]: delta = df['Date'].iat[-1] - df['Date'].iat[0]
In [27]: delta
Out[27]: numpy.timedelta64(30300000000,'ns')
In [28]: delta / np.timedelta64(1, 's')
Out[28]: 30.300000000000001
第28行是将结果“标准化”为秒,因为初始结果是以纳秒为单位。
修改强>
基于您上传的CSV,问题在于您的日期格式不易转换为日期时间。您需要在转换前截断前两个和最后一个字符。以下代码可以正常工作并提供正确的目标值。
In [1]: import numpy as np
In [2]: import pandas as pd
In [3]: df = pd.read_csv("dummy.csv")
In [4]: str_ = lambda x:x[2:-1]
In [5]: df["Timestamp"] = df["Timestamp"].map(str_)
In [6]: df["Timestamp"] = pd.to_datetime(df["Timestamp"])
In [7]: delta_ = df["Timestamp"].iat[-1] - df["Timestamp"].iat[0]
In [8]: delta_
Out[8]: numpy.timedelta64(36981327000,'ns')
In [9]: delta_ / np.timedelta64(1, "s")
Out[9]: 36.981327
如果有效,请告知我们。