2017-03-19 82 views
0

我想以yyyy-mm-dd格式取一列並將其轉換爲mm-dd格式(或MON DD,也可以),同時保留日期或數字格式。我試圖使用pd.to_datetime,但它似乎不起作用,因爲它需要年份,所以它最終填充1900年的新列。我不尋找轉換,其中新列是一個對象,因爲我需要稍後使用該列進行繪製。什麼是最好的方法?數據幀非常小。在Python中保存一個月份和日期格式的數據熊貓

OldDate    NewDate1  NewDate2  NewDate3 
2017-01-02   01-02  01/02   Jan 2 
2015-05-14   05-14  05/14   May 14 
+0

可以據我所知,這個年份並沒有日期格式。最好你能做的是一個字符串 – piRSquared

+0

好吧,如果這是真的,我有一列01-01,01-02,01-03等,他們是字符串,我怎麼能讓他們成爲一個序列,使他們可以繪製在x軸上?爲什麼這麼簡單的概念變得如此困難? – AidKulesh

回答

1

您可以使用子概念上OldDate如下:

OldDate = '2017-01-02' 

NewDate1=OldDate[5:] 
print(NewDate1) # This will give result as : "01-02" 

NewDate2 = OldDate[5:7] + "/" + OldDate[8:10] 
print(NewDate2) # This will give result as "01/02" 
+0

這會產生一個字符串,這正是我想要避免的。 – AidKulesh

0

比方說,你有:

df = pd.DataFrame({"OldDate":["2017-01-02","2015-05-14"]}) 

df 
    OldDate 
0 2017-01-02 
1 2015-05-14 

然後,你可以這樣做:

from datetime import datetime as dt 

df['OldDate'] = df.OldDate.apply(lambda s: dt.strptime(s, "%Y-%m-%d")) 
df['NewDate1'] = df.OldDate.dt.strftime("%m-%d") 
df['NewDate2'] = df.OldDate.dt.strftime("%m/%d") 
df['NewDate3'] = df.OldDate.dt.strftime("%b %d") 

df 
    OldDate NewDate1 NewDate2 NewDate3 
0 2017-01-02 01-02 01/02 Jan 02 
1 2015-05-14 05-14 05/14 May 14 
相關問題