我正在扫描一个日期列表,在一个数据框中找到最短日期,然后从所有其他日期中减去最短日期,得到最短日期和其他日期之间的天数。它在我的电脑上工作,代码如下:
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(),就像这个例子一样,但是没有成功
谢谢
目前没有回答
相关问题 更多 >
编程相关推荐