将列转换为时间戳-Pandas Dataframe

Tau*_*eer 5 datetime python-3.x pandas

我有一个熊猫数据框,其中的日期值以以下格式存储在2列中:

Column 1: 04-APR-2018 11:04:29
Column 2: 2018040415203 
Run Code Online (Sandbox Code Playgroud)

如何将其转换为时间戳。这两个列的数据类型均为Object。

And*_*den 9

对于第一种格式,您可以简单地传递to_datetime,对于后者,您需要显式描述日期格式(请参阅python docs中可用指令的表):

In [21]: df
Out[21]:
                   col1           col2
0  04-APR-2018 11:04:29  2018040415203

In [22]: pd.to_datetime(df.col1)
Out[22]:
0   2018-04-04 11:04:29
Name: col1, dtype: datetime64[ns]

In [23]: pd.to_datetime(df.col2, format="%Y%m%d%H%M%S")
Out[23]:
0   2018-04-04 15:20:03
Name: col2, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

  • 我不明白的是,这个转换将其转换为“np.datetime64”,而我需要做一些“pd.Timedelta”数学,它仅适用于“pd.Timestamp”。我在任何地方都找不到如何将列转换为“pd.Timestamp”...我想我会打开一个新的 Q (3认同)

小智 8

你也可以试试这些。尝试在读取文件时传递infer_datetime_format = True

如果上述方法失败,请尝试以下方法

df2 = pd.to_datetime(df.col1)
Run Code Online (Sandbox Code Playgroud)

或者

df2 = pd.to_datetime(df['col1'])
df2
Run Code Online (Sandbox Code Playgroud)

请注意,上述方法只会将 str 转换为日期时间格式并在 df2 中返回它们。简而言之 df2 将只有 str 的日期时间格式,而没有列名。如果您想保留数据框的其他列并希望为转换后的列提供标题,您可以尝试以下操作

df['col1_converetd'] = pd.to_datetime(df.col1)
Run Code Online (Sandbox Code Playgroud)

或者

df['col1_converetd'] = pd.to_datetime(df['col1'])
Run Code Online (Sandbox Code Playgroud)

如果您不想创建数据框或希望将来将转换后的列与数据框的其他属性一起引用,这是很舒服的。