我有一个数据框。我将两个日期列转换为日期时间格式。我想以分钟计算差异。但是我收到以下错误。
from datetime import datetime
df['A'] = df['A'].apply(lambda t: datetime.strptime(t, '%Y-%m-%d %H:%M:%S'))
df['B'] = df['B'].apply(lambda t: datetime.strptime(t, '%Y-%m-%d %H:%M:%S'))
df['C'] = ((df['B']-df['A']).apply(lambda x:x.total_seconds()/60.))
我收到此错误:
AttributeError: 'numpy.timedelta64' object has no attribute 'total_seconds'
任何帮助都将不胜感激。
修改 小数据集工作正常:
df = pd.DataFrame({'A':['2015-09-01 00:02:34', '2015-09-02 00:02:34'],'B': ['2015-09-02 00:02:34', '2015-09-03 00:02:34']})
df['A'] = df['A'].apply(lambda t: datetime.strptime(t, '%Y-%m-%d %H:%M:%S'))
df['B'] = df['B'].apply(lambda t: datetime.strptime(t, '%Y-%m-%d %H:%M:%S'))
df['C'] = ((df['B']-df['A']).apply(lambda x:x.total_seconds()/60.))
df
A B C
0 2015-09-01 00:02:34 2015-09-02 00:02:34 1440.0
1 2015-09-02 00:02:34 2015-09-03 00:02:34 1440.0
对于我原来的大数据集,如果我只选择每列的前两行并执行相同的apply函数,我会得到相同的错误。
答案 0 :(得分:1)
我似乎需要这样做:
df['C'] = (df['B'] - df['A'])/ np.timedelta64(1, 's')