2015-02-24 103 views
3

我想将日期时间列转换回Pandas数据框中的字符串。将日期时间列转换回字符串列?大熊猫 - Python

语法我到目前为止是:

all_data['Order Day new'] = dt.date.strftime(all_data['Order Day new'], '%d/%m/%Y') 

但这返回错误:

描述信息的strftime'需要“datetime.date”对象,但获得了“系列”。

任何人都可以告诉我我哪里出错了。

回答

6

你必须调用apply并将数据传递到strftime

In [111]: 

all_data = pd.DataFrame({'Order Day new':[dt.datetime(2014,5,9), dt.datetime(2012,6,19)]}) 
print(all_data) 
all_data.info() 
    Order Day new 
0 2014-05-09 
1 2012-06-19 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 2 entries, 0 to 1 
Data columns (total 1 columns): 
Order Day new 2 non-null datetime64[ns] 
dtypes: datetime64[ns](1) 
memory usage: 32.0 bytes 

In [108]: 

all_data['Order Day new'] = all_data['Order Day new'].apply(lambda x: dt.datetime.strftime(x, '%Y-%m-%d')) 
all_data 
Out[108]: 
    Order Day new 
0 2014-05-09 
1 2012-06-19 
In [109]: 

all_data.info() 
<class 'pandas.core.frame.DataFrame'> 
Int64Index: 2 entries, 0 to 1 
Data columns (total 1 columns): 
Order Day new 2 non-null object 
dtypes: object(1) 
memory usage: 32.0+ bytes 

您不能调用strftime在列,因为它不理解Series作为PARAM因此错误

编辑

如果您使用的版本0.17.0或更高版本,那么你可以使用调用此10被矢量化:

all_data['Order Day new'] = all_data['Order Day new'].dt.strftime('%Y-%m-%d') 
相关问题