2016-10-28 11 views
0

日付を見つけることができる別の列に基づいて月を示す新しい列を作成したいと思います。日付を月 - 年に変換する新しい列パンダPython

私は次のコードを作成しました:

BusinessObjects_na_['Customer Handover Date'] = pd.to_datetime(BusinessObjects_na_['Customer Handover Date']) 
BusinessObjects_na_['Month'] = BusinessObjects_na_['Customer Handover Date'].apply(lambda x: str(x).strftime('%B-%Y')) 

をしかし、Pythonは次のエラーを与える:

AttributeError: 'str' object has no attribute 'strftime' 

誰かがこの1で私を助けることができますか?あなたはパンダの最新バージョンを実行している場合

+0

キャストを 'str'に削除しようとしましたか? 'lambda x:x.strftime( '%B-%Y')' – Ben

答えて

5

あなたはdt.strftime使用することができます。

BusinessObjects_na_['Month'] = BusinessObjects_na_['Customer Handover Date'].dt.strftime('%B-%Y') 
あなたのコードは、STR `にキャストせずに働いてきたでしょう

BusinessObjects_na_['Month'] = BusinessObjects_na_['Customer Handover Date'].apply(lambda x: x.strftime('%B-%Y')) 

例:

In [276]: 
df = pd.DataFrame({'date':pd.date_range(dt.datetime(2016,1,1), periods=10)}) 
df 

Out[276]: 
     date 
0 2016-01-01 
1 2016-01-02 
2 2016-01-03 
3 2016-01-04 
4 2016-01-05 
5 2016-01-06 
6 2016-01-07 
7 2016-01-08 
8 2016-01-09 
9 2016-01-10 

In [279]:  
df['date'].dt.strftime('%b-%Y') 

Out[279]: 
0 Jan-2016 
1 Jan-2016 
2 Jan-2016 
3 Jan-2016 
4 Jan-2016 
5 Jan-2016 
6 Jan-2016 
7 Jan-2016 
8 Jan-2016 
9 Jan-2016 
Name: date, dtype: object 

および

In [281]: 
df['date'].apply(lambda x: x.strftime('%b-%Y')) 

Out[281]: 
0 Jan-2016 
1 Jan-2016 
2 Jan-2016 
3 Jan-2016 
4 Jan-2016 
5 Jan-2016 
6 Jan-2016 
7 Jan-2016 
8 Jan-2016 
9 Jan-2016 
Name: date, dtype: object 
関連する問題