2015-02-24 102 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') 
相關問題