2024-09-13 18:59:57 发布
网友
我正在从一个超过14000行的文本文件中读取数据,其中有一列包含八(08)位数字。某些行的格式如下:
问题是当我使用to_date函数时,它将date from object的数据类型转换为int64,但我希望它是datetime。第二种方法是使用to\u datetime函数
您可以将参数dtype添加到^{}中,以便将列col转换为{},然后将{a2}与参数format一起使用,以指定格式,errors='coerce'-因为错误日期被转换为NaT:
dtype
col
format
errors='coerce'
NaT
import pandas as pd import io temp=u"""col 01021943 02031944 00041945 00001946""" #after testing replace io.StringIO(temp) to filename df = pd.read_csv(io.StringIO(temp), dtype={'col': 'str'}) df['col'] = pd.to_datetime(df['col'], format='%d%m%Y', errors='coerce') print (df) col 0 1943-02-01 1 1944-03-02 2 NaT 3 NaT print (df.dtypes) col datetime64[ns] dtype: object
感谢Jon Clements提供另一个解决方案:
作为第一个猜测的解决方案,您可以将它作为一个字符串解析到一个datetime实例中。比如:
from datetime import datetime EXAMPLE = u'01021943' dt = datetime(int(EXAMPLE[4:]), int(EXAMPLE[2:4]), int(EXAMPLE[:2]))
…不太关心性能问题。在
import datetime def to_date(num_str): return datetime.datetime.strptime(num_str,"%d%m%Y")
注意,这也会引发零值的异常,因为此输入的预期行为不清楚。 如果要为零值使用不同的行为,可以使用try & except, 例如,如果您想获得None的零值,可以执行以下操作:
try & except
None
您可以将参数} 中,以便将列},然后将{a2}与参数
dtype
添加到^{col
转换为{format
一起使用,以指定格式,errors='coerce'
-因为错误日期被转换为NaT
:感谢Jon Clements提供另一个解决方案:
^{pr2}$作为第一个猜测的解决方案,您可以将它作为一个字符串解析到一个datetime实例中。比如:
…不太关心性能问题。在
注意,这也会引发零值的异常,因为此输入的预期行为不清楚。
^{pr2}$如果要为零值使用不同的行为,可以使用
try & except
,例如,如果您想获得
None
的零值,可以执行以下操作:相关问题 更多 >
编程相关推荐