2017-12-18 519 views
1

我的數據集有日期列中的值,如以下格式:大熊貓日期時間格式轉換

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

我想將它們轉換成日期時間數據類型的讓我不能在它進行時間序列分析。

我已經寫在下面的方法:但它給我值誤差

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

'pd.to_datetime(df_scores [ '日期'] str的[0]。)'? –

+0

它是一個日期時間列表的列嗎?或者它是一串字符串? –

+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 
+0

生成的數據幀的日期類型爲「非空datetime64 [ns]」。 它爲什麼說非null?當它應該只是datatime64 –

+0

@MayurMahajan所以,這意味着它的工作......除非你有其他問題?據我所知,沒有任何區別。 –

+0

我不明白爲什麼它說非空datetime64 [ns]。 –

0

如果你from datetime import datetime 那麼你應該指定日期如下: [datetime(2017, 2, 17)] 這將導致<class 'pandas._libs.tslib.Timestamp'>類型的項目,你可以轉換爲日期時間使用.to_datetime()

0

這應該工作:

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

ValueError:time data'[datetime.date(2013,7,31),datetime.date(2013,8,1)]'與格式'[datetime.date(%Y,%m,%d)]不匹配'(match) –

+0

那麼你的數據框中的單行可以有兩個或更多的日期值? –

+0

沒有DF沒有2個或更多數據值。 –