Pandas:[Errno 75]对于定义的数据类型

时间:2017-07-31 19:32:23

标签: python pandas

我在转换日期时间列时遇到这个奇怪的错误。

这是令人讨厌的代码行:

data['date'] = data['datetime'].map(lambda x:datetime.utcfromtimestamp(x/1000))

为了使事情更有趣,这有效:

datetime.utcfromtimestamp(data.datetime.max()/1000)

因此可以转换最大值,但对于某些其他值,我得到的值太大而无法定义数据类型错误。

感谢您的帮助!

2 个答案:

答案 0 :(得分:3)

在熊猫中,我们可以这样做:

data['date'] = data['datetime'].astype(np.int64) // 10**9

从1970-01-01 00:00:00 UTC开始为我们提供了一些

如果您希望/需要获得毫秒的#:

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

答案 1 :(得分:0)

您的数据帧中可能有一个NaN-不会捕获使用NaN的计算(如在x / 1000中),但是当尝试将其转换为日期时间对象时,它将引发Value Too Large错误。当您在数据框上调用max时,它不会返回NaN,这就是在这种情况下它可以工作的原因。