pandas datetime格式转换

时间:2017-12-18 13:05:32

标签: python pandas datetime time-series

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

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")]')

3 个答案:

答案 0 :(得分:1)

如果您的列是列表中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

答案 1 :(得分:0)

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

将其转换为日期时间

答案 2 :(得分:0)

这应该有效:

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