2017-05-08 66 views
1

我有在形成「加入時間」列的CSV文件:「2015年1月5日,」 我要轉換爲「2015年1月5日」這是在Pandas/Python中更改日期的正確方法嗎?

以下是我與大熊貓來完成:

for i in range(len(data)): 
    dt_obj = dt.datetime.strptime(data["Date Joined"][i] , "%B %d, %Y") 
    result = dt_obj.strftime("%Y-%m-%d") 
    data["Date Joined"][i] = result 

這工作,但我有一種感覺,這是不是真的正確,速度很慢。

這是正確的方法嗎?我應該採取不同的方式嗎

謝謝。

回答

1

你可以使用to_datetime

data['Date Joined'] = pd.to_datetime(data['Date Joined'], format="%B %d, %Y")

要整列轉換,而不是迭代

例如爲:

In [9]: 
df = pd.DataFrame({'date':["January 5, 2015", "January 6, 2015" , "March 5, 2015" ]}) 
df 

Out[9]: 
       date 
0 January 5, 2015 
1 January 6, 2015 
2 March 5, 2015 

In [10]: 
df['datetime'] = pd.to_datetime(df['date'], format='%B %d, %Y') 
df 

Out[10]: 
       date datetime 
0 January 5, 2015 2015-01-05 
1 January 6, 2015 2015-01-06 
2 March 5, 2015 2015-03-05 

In [11]:  
df.info() 

<class 'pandas.core.frame.DataFrame'> 
RangeIndex: 3 entries, 0 to 2 
Data columns (total 2 columns): 
date  3 non-null object 
datetime 3 non-null datetime64[ns] 
dtypes: datetime64[ns](1), object(1) 
memory usage: 128.0+ bytes 
+0

感謝您的快速答覆。這在幾乎完美的作品中,在新創建的列中,我有一個時間字段沒有出現在您的示例中,如下所示:「2015-01-05 00:00:00」 – Mike

+0

某些字符串可能具有時間值,重新運行一個老版本的熊貓,即使時間分量爲'00:00:00',默認總是顯示時間' – EdChum

+0

好的我會盡力找出答案,不應該是個大問題。感謝您的回答,我會注意到回答:) – Mike

相關問題