我有一个包含一系列日期的数据框,例如:
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回答。谢谢!
答案 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();
}
}
}
}