Python 熊猫:[Errno 75]值对于定义的数据类型太大

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

我在转换datetime列时出现了一个奇怪的错误

这是有问题的代码行:

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