pandas datetime格式转换

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pandas datetime格式转换相关的知识,希望对你有一定的参考价值。

我的数据集在日期列中具有以下格式的值:

date
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]
[datetime.date(2017, 2, 17)]

我想将它们转换为datetime的数据类型,以便我无法对其进行时间序列分析。

我用以下方式写了:但它给了我价值错误

df_scores['date']=pd.to_datetime(df_scores['date'],format='[datetime.date("%Y, %m, %d")]')
答案

如果您的列是列表中的date对象列,这应该足够了 -

df.date = pd.to_datetime(df_scores['date'].str[0], errors='coerce')

如果你有一列字符串,你可以使用str.findall来提取日期工件,并使用str.jointo_datetime理解的格式加入它们。

i = df.date.astype(str)
      .str.findall('d+')
      .str.join('/')
df.date = pd.to_datetime(i, errors='coerce')

如果您有一列字符串列,而不是一列字符串,则需要astype(str)。如果列中的数据格式错误,您可能还需要另一个参数errors='coerce'


df

         date
0  2017-02-17
1  2017-02-17
2  2017-02-17
3  2017-02-17
4  2017-02-17
5  2017-02-17
6  2017-02-17
7  2017-02-17
8  2017-02-17
9  2017-02-17
10 2017-02-17
11 2017-02-17
另一答案

如果你from datetime import datetime那么你应该指定这样的日期:[datetime(2017, 2, 17)]这将导致<class 'pandas._libs.tslib.Timestamp'>类型的条目,你可以使用.to_datetime()转换为datetime

另一答案

这应该工作:

df_scores['date']=pd.to_datetime(df_scores['date'],format="[datetime.date(%Y, %m, %d)]")

以上是关于pandas datetime格式转换的主要内容,如果未能解决你的问题,请参考以下文章

使用 pandas.to_datetime 转换时指定日期格式

如何在 Pandas 数据框中将日期转换为 ISO-8601 DateTime 格式

将 float64 列转换为 datetime pandas 时出错

Pandas中to_datetime()转换时间序列函数一文详解

pandas中,类型为datetime.time,如何进行比较?

Python/Pandas:如何从 datetime64[ns] 转换为 datetime