2016-03-15 210 views
2

我想要一個帶有時間戳列的熊貓數據框,並且只想創建一個僅包含月份的列。我想要月份列的字符串表示月份,而不是整數。我做了這樣的事情:將熊貓日期時間月轉換爲字符串表示

df['Dates'] = pd.to_datetime(df['Dates']) 
df['Month'] = df.Dates.dt.month 
df['Month'] = df.Month.apply(lambda x: datetime.strptime(str(x), '%m').strftime('%b')) 

但是,這是一種蠻力的方法,並不是非常高性能。有沒有更好的方法將月份的整數表示轉換爲字符串表示形式?

回答

4

使用矢量化您的日期時間dt.strftime

In [43]: 
df = pd.DataFrame({'dates':pd.date_range(dt.datetime(2016,1,1), dt.datetime(2017,2,1), freq='M')}) 
df 

Out[43]: 
     dates 
0 2016-01-31 
1 2016-02-29 
2 2016-03-31 
3 2016-04-30 
4 2016-05-31 
5 2016-06-30 
6 2016-07-31 
7 2016-08-31 
8 2016-09-30 
9 2016-10-31 
10 2016-11-30 
11 2016-12-31 
12 2017-01-31 

In [44]:  
df['month'] = df['dates'].dt.strftime('%b') 
df 

Out[44]: 
     dates month 
0 2016-01-31 Jan 
1 2016-02-29 Feb 
2 2016-03-31 Mar 
3 2016-04-30 Apr 
4 2016-05-31 May 
5 2016-06-30 Jun 
6 2016-07-31 Jul 
7 2016-08-31 Aug 
8 2016-09-30 Sep 
9 2016-10-31 Oct 
10 2016-11-30 Nov 
11 2016-12-31 Dec 
12 2017-01-31 Jan 
+0

是否有使用這種方法與我的「日期」一欄的np.datetime64格式使用'DF [「日期」]當我得到一個方式= pd.to_datetime(df ['Dates'])'? – farnold

+0

它是相同的'dtype'因此它應該工作 – EdChum

+0

當我使用這個解決方案時,我得到以下錯誤'AttributeError:'DatetimeProperties'對象沒有屬性'strftime'。任何想法? – farnold

相關問題