转换为日期时间
Converting to datetime
我是 Python 的初学者。我在将数据转换为日期时间格式时遇到问题。在 DTNAIPRS 列中,我有:
0 1972-12-22
1 1936-04-01
2 1925-10-05
3 1926-07-09
4 1952-01-12
5 1964-12-31
6 1940-01-13
7 1942-09-01
8 1939-01-12
9 1954-04-14
10 0001-01-01
11 1944-04-18
12 0001-01-01
13 1932-11-16
14 1936-05-18
15 1936-07-02
16 1944-01-13
17 1954-06-20
18 1927-02-14
19 1938-04-29
20 0001-01-01
当我尝试用这个在日期时间转换它时:test = pd.to_datetime(T_Client.DTNAIPRS.values)
我有这个错误:
>Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6081451798601516313.py", line 349, in <module>
raise Exception(traceback.format_exc())
Exception: Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6081451798601516313.py", line 342, in <module>
exec(code)
File "<stdin>", line 4, in <module>
File "/misc/anaconda2-4.4.0/envs/dev2/lib/python2.7/site-packages/pandas/core/tools/datetimes.py", line 380, in to_datetime
result = _convert_listlike(arg, box, format)
File "/misc/anaconda2-4.4.0/envs/dev2/lib/python2.7/site-packages/pandas/core/tools/datetimes.py", line 306, in _convert_listlike
raise e
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00
你能帮帮我吗?
谢谢
由于pandas以纳秒分辨率表示时间戳,因此可以使用 64 位整数表示的时间跨度限制为大约 584 年
你的日期值超出范围1-01-01 00:00:00
所以它是越界错误。
In [92]: pd.Timestamp.min
Out[92]: Timestamp('1677-09-21 00:12:43.145225')
In [93]: pd.Timestamp.max
Out[93]: Timestamp('2262-04-11 23:47:16.854775807')
这是一步一步的
import pandas as pd
import numpy as np
d = ['1972-12-22','1936-04-01','1925-10-05','1926-07-09','1952-01-12']
df = pd.DataFrame({'dates' :d})
df['dates'] = df['dates'].astype(pd.datetime)
df['dates'].dtype
df2 = pd.to_datetime(df['dates'])
print(df2)
这里是在 Google Colab 中试用的,我想这就是您要找的
如果您遇到任何其他问题,请告诉我。
我正在使用此代码将 str 转换为时间。
首先应用你想要的格式,在我的例子中是 hour/minute/second
你可以插入 yyyy-mm-dd
然后 select 需要更改列并将 .dt.time
更改为 .dt.date
frmt= '%H:%M:%S'
df['column name'] = pd.to_datetime(df['column name'],format=frmt).dt.time
祝你好运
您的问题是您的列包含无法在基础 pd.Timestamp
类型中表示的(奇怪的)日期,因为它派生自 numpy datetime64 类型(有关详细信息,请参阅 )。
一种简单的方法是在转换前过滤掉这些值:
pd.to_datetime(T_Client.DTNAIPRS.where(T_Client.DTNAIPRS>='1677-09-22'))
我是 Python 的初学者。我在将数据转换为日期时间格式时遇到问题。在 DTNAIPRS 列中,我有:
0 1972-12-22
1 1936-04-01
2 1925-10-05
3 1926-07-09
4 1952-01-12
5 1964-12-31
6 1940-01-13
7 1942-09-01
8 1939-01-12
9 1954-04-14
10 0001-01-01
11 1944-04-18
12 0001-01-01
13 1932-11-16
14 1936-05-18
15 1936-07-02
16 1944-01-13
17 1954-06-20
18 1927-02-14
19 1938-04-29
20 0001-01-01
当我尝试用这个在日期时间转换它时:test = pd.to_datetime(T_Client.DTNAIPRS.values)
我有这个错误:
>Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6081451798601516313.py", line 349, in <module>
raise Exception(traceback.format_exc())
Exception: Traceback (most recent call last):
File "/tmp/zeppelin_pyspark-6081451798601516313.py", line 342, in <module>
exec(code)
File "<stdin>", line 4, in <module>
File "/misc/anaconda2-4.4.0/envs/dev2/lib/python2.7/site-packages/pandas/core/tools/datetimes.py", line 380, in to_datetime
result = _convert_listlike(arg, box, format)
File "/misc/anaconda2-4.4.0/envs/dev2/lib/python2.7/site-packages/pandas/core/tools/datetimes.py", line 306, in _convert_listlike
raise e
OutOfBoundsDatetime: Out of bounds nanosecond timestamp: 1-01-01 00:00:00
你能帮帮我吗? 谢谢
由于pandas以纳秒分辨率表示时间戳,因此可以使用 64 位整数表示的时间跨度限制为大约 584 年
你的日期值超出范围1-01-01 00:00:00
所以它是越界错误。
In [92]: pd.Timestamp.min
Out[92]: Timestamp('1677-09-21 00:12:43.145225')
In [93]: pd.Timestamp.max
Out[93]: Timestamp('2262-04-11 23:47:16.854775807')
这是一步一步的
import pandas as pd
import numpy as np
d = ['1972-12-22','1936-04-01','1925-10-05','1926-07-09','1952-01-12']
df = pd.DataFrame({'dates' :d})
df['dates'] = df['dates'].astype(pd.datetime)
df['dates'].dtype
df2 = pd.to_datetime(df['dates'])
print(df2)
这里是在 Google Colab 中试用的,我想这就是您要找的
如果您遇到任何其他问题,请告诉我。
我正在使用此代码将 str 转换为时间。 首先应用你想要的格式,在我的例子中是 hour/minute/second 你可以插入 yyyy-mm-dd
然后 select 需要更改列并将 .dt.time
更改为 .dt.date
frmt= '%H:%M:%S'
df['column name'] = pd.to_datetime(df['column name'],format=frmt).dt.time
祝你好运
您的问题是您的列包含无法在基础 pd.Timestamp
类型中表示的(奇怪的)日期,因为它派生自 numpy datetime64 类型(有关详细信息,请参阅
一种简单的方法是在转换前过滤掉这些值:
pd.to_datetime(T_Client.DTNAIPRS.where(T_Client.DTNAIPRS>='1677-09-22'))