我的数据集在日期列中包含以下格式的值:
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")]')
答案 0 :(得分:1)
如果您的列是列表中date
个对象的列,那么这应该足够了 -
df.date = pd.to_datetime(df_scores['date'].str[0], errors='coerce')
如果您有一列字符串,则可以使用str.findall
提取日期工件,并str.join
以to_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)]")