从另一个日期减去一个日期会产生很多错误

2024-05-08 16:10:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在扫描一个日期列表,在一个数据框中找到最短日期,然后从所有其他日期中减去最短日期,得到最短日期和其他日期之间的天数。它在我的电脑上工作,代码如下:

MinDay = a1_raw_data['EventDate'].min()
a1_raw_data['DaysSince'] = (a1_raw_data['EventDate'] - MinDay) / np.timedelta64(1, 'D')

我现在在云上尝试它,它似乎通过将它解释为一个字符串来给我带来错误:

TypeError: unsupported operand type(s) for -: 'str' and 'str'

此外,我还尝试将这两个日期转换为如下日期:

MinDay = a1_raw_data['EventDate'].min()

MinDay = pd.to_datetime(MinDay)
a1_raw_data['EventDate'] = pd.to_datetime(a1_raw_data['EventDate'])

a1_raw_data['DaysSince'] = (a1_raw_data['EventDate'] - MinDay) / np.timedelta64(1, 'D')

错误:

TypeError: data type "datetime" not understood

并修改了减法,如下所示:

MinDay = a1_raw_data['EventDate'].min()

MinDay = pd.to_datetime(MinDay)
a1_raw_data['EventDate'] = pd.to_datetime(a1_raw_data['EventDate'])

a1_raw_data['DaysSince'] = (a1_raw_data['EventDate'].subtract(MinDay)) / np.timedelta64(1, 'D')

错误:

TypeError: ufunc subtract cannot use operands with types dtype('<M8[ns]') and dtype('O')

有什么减法的建议吗

谢谢

更新

多亏了Pygirl给我的例子,我似乎得到了如下工作:

MinDay = a1_raw_data['EventDate'].min()

MinDay = pd.to_datetime(MinDay)
MinDay = np.array(MinDay,dtype=np.datetime64)

EventDate = pd.to_datetime(a1_raw_data['EventDate'])
EventDate = np.array(EventDate,dtype=np.datetime64)

a1_raw_data['DaysSince'] = EventDate - MinDay

所以谢谢。但是现在它非常慢,因为必须将a1\u原始数据['EventDate']转换为np.arrays()。有没有一个更有效的方法可以建议?当我在我的桌面上做这件事时,下面的一行正在工作

MinDay = a1_raw_data['EventDate'].min()
a1_raw_data['DaysSince'] = (a1_raw_data['EventDate'] - MinDay) / np.timedelta64(1, 'D')

现在,它需要在不同的计算机上实现上述所有功能。我试着把MinDay转换成np.array(),就像这个例子一样,但是没有成功

谢谢


Tags: todatadatetimerawa1错误npmin

热门问题