Python 熊猫:[Errno 75]值对于定义的数据类型太大
我在转换datetime列时出现了一个奇怪的错误 这是有问题的代码行:Python 熊猫:[Errno 75]值对于定义的数据类型太大,python,pandas,Python,Pandas,我在转换datetime列时出现了一个奇怪的错误 这是有问题的代码行: data['date'] = data['datetime'].map(lambda x:datetime.utcfromtimestamp(x/1000)) 为了使事情更有趣,这项工作: datetime.utcfromtimestamp(data.datetime.max()/1000) 因此,可以转换最大值,但对于某些其他值,我得到的值对于定义的数据类型错误来说太大 谢谢你的帮助 在熊猫中,我们可以这样做: dat
data['date'] = data['datetime'].map(lambda x:datetime.utcfromtimestamp(x/1000))
为了使事情更有趣,这项工作:
datetime.utcfromtimestamp(data.datetime.max()/1000)
因此,可以转换最大值,但对于某些其他值,我得到的值对于定义的数据类型错误来说太大
谢谢你的帮助 在熊猫中,我们可以这样做:
data['date'] = data['datetime'].astype(np.int64) // 10**9
这给了我们自1970-01-01 00:00:00 UTC以来的秒数
如果希望/需要获得毫秒数:
演示:
您的数据帧中可能有一个NaN—使用NaN的计算不会像在x/1000中那样被捕获,但是当尝试将其转换为datetime对象时,它会抛出太大的值错误。当您在数据帧上调用max时,它不会返回NaN,这就是它在这种情况下工作的原因。您使用的是32位机器吗?不,它是64b系统。谢谢,转换似乎可以工作。我仍然不知道为什么上一次转换失败,错误值太大。@user3635284,我无法使datetime.utcfromtimestampdata.datetime.max/1000在Python 3.6+0.20.1下工作。它给了我:TypeError:需要一个整数才能得到类型时间戳
data['date'] = data['datetime'].astype(np.int64) // 10**6
In [15]: data = pd.DataFrame({'datetime':pd.date_range('2000-01-01', freq='99D', periods=10)})
In [16]: data
Out[16]:
datetime
0 2000-01-01
1 2000-04-09
2 2000-07-17
3 2000-10-24
4 2001-01-31
5 2001-05-10
6 2001-08-17
7 2001-11-24
8 2002-03-03
9 2002-06-10
In [17]: data['date'] = data['datetime'].astype(np.int64) // 10**9
In [18]: data
Out[18]:
datetime date
0 2000-01-01 946684800
1 2000-04-09 955238400
2 2000-07-17 963792000
3 2000-10-24 972345600
4 2001-01-31 980899200
5 2001-05-10 989452800
6 2001-08-17 998006400
7 2001-11-24 1006560000
8 2002-03-03 1015113600
9 2002-06-10 1023667200