将DateTime转换为一年中的连续日期

时间:2016-09-20 23:16:28

标签: python pandas

我有一个包含一系列日期的数据框,例如:

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

所有价值均在同一年内。 相反的问题已被多次询问 - 将一年中的连续日转换为日期,但我需要做相反的事情。 Pandas有一个简单的方法吗?谢谢!

编辑:由piRSquared回答。谢谢!

2 个答案:

答案 0 :(得分: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 :(得分:-1)

是的,我做到了。请参考我的下面的代码。

<强> Screen shot of my RESULT

步骤1:创建String数据类型数组并以字符串格式添加日期。

第2步:因为你有多个日期,所以使用for循环。

第3步:将字符串转换为日期格式。

步骤4:Conver Date to 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();
            }

        }


    }
}