2017-05-08 81 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

相关问题