2016-09-20 60 views
2

我有一個包含一系列的日期的數據幀,例如:轉換日期時間爲一年的連續天

0 2014-06-17 
1 2014-05-05 
2 2014-01-07 
3 2014-06-29 
4 2014-03-15 
5 2014-06-06 
7 2014-01-29 

現在,我需要一種方式將這些日期轉換爲一年的,例如連續天

0 168 
1 125 
2 7 
3 180 
4 74 
5 157 
7 29 

所有的值都在同一年內。 多次提出相反的問題 - 將一年中的連續日期轉換爲日期,但我需要做相反的事情。有沒有一種簡單的方法可以和熊貓一起做到這一點?謝謝!

編輯:由piRSquared回答。謝謝!

+0

相關文檔:http://pandas.pydata.org/pandas-docs/stable/timeseries.html#time-date-components – root

回答

3

選項1
time-date-components
從@root鏈接
使用dt.dayofyear

df.iloc[:, 0].dt.dayofyear 

0 168 
1 125 
2  7 
3 180 
4  74 
5 157 
7  29 
Name: 1, dtype: int64 

選項2
strftime.org
使用dt.strftime('%-j')

df.iloc[:, 0].dt.strftime('%-j') 


0 168 
1 125 
2  7 
3 180 
4  74 
5 157 
7  29 
Name: 1, dtype: object 
-1

是的,我做到了。請參考我的下面的代碼。

Screen shot of my RESULT

步驟1:字符串數據類型的陣列和串格式添加日期。

第2步:因爲您有多個日期,所以用於循環。

第3步:將字符串轉換爲日期格式。

第4步:Conver日期到LocalDate格式。

第5步:使用getDatOfYear()內置函數獲取一年中的順序日期。

package test; 

import java.text.ParseException; 
import java.text.SimpleDateFormat; 
import java.time.Instant; 
import java.time.LocalDate; 
import java.time.ZoneId; 
import java.util.*; 

public class ShubhamDateClass{ 
    public static void main(String[] args) { 
     SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); 
     String[] dateForTest = {"17-JUN-2014","05-MAY-2014","07-JAN-2017","20-JUN-2014","15-MAR-2014", "6-JUN-2014", "29-JAN-2014"}; 
     for(int i=0;i<dateForTest.length;i++){ 
      try { 

       Date date = formatter.parse(dateForTest[i]); 
       System.out.print(formatter.format(date)+" --- "); 
       LocalDate dateTest = Instant.ofEpochMilli(date.getTime()).atZone(ZoneId.systemDefault()).toLocalDate(); 
       int dayOfYear2 = dateTest.getDayOfYear(); 
       System.out.println(dayOfYear2); 

      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 

     } 


    } 
} 
相關問題