字符串到日期时间的转换 - 指定在日期和月份日期的年份
问题描述:
我是R用户,试图学习Python。字符串到日期时间的转换 - 指定在日期和月份日期的年份
我正在Python中的数据框中有一个dtype对象的日期列。
df['Date']
0 1-Mar
1 1-Mar
2 1-Mar
3 1-Mar
4 1-Mar
5 1-Mar
我想这个对象转换为日期时间使用此:
pd.to_datetime(df['Date'], format = "%d-%b")
结果我的样子:
0 1900-03-01
1 1900-03-01
2 1900-03-01
3 1900-03-01
4 1900-03-01
5 1900-03-01
这对我来说有点陌生,因为当我R
使用:
as.Date(df$Date, format = "%d-%b")
我得到了我期望:
[1] "2016-03-01" "2016-03-01" "2016-03-01" "2016-03-01"
[5] "2016-03-01" "2016-03-01"
出现了两个问题:1)为什么R
假设我想当年,什么,如果我不希望当年做?
2)在Python中,使用熊猫 - 如何指定我想要的年份以及时区?
谢谢。
答
1)为什么R假设我想要今年,以及如果我不想要今年?
R是假设,因为你有种要求它假设。问题是:当您提供R没有一年的1-Mar
时,返回的答案可能是系统特定的。最常见的行为是假设失去的一年,一月或一天是当前的一个。因此,一旦转换完成,您将获得当年的收入。如果仅仅是因为你不想要今年,你可以通过指定年来告诉R.
2)在Python中,使用熊猫 - 如何指定我想要的年份以及时区?
同样,当你没有为它们提供一个有意义的字符串格式时,你真的不能指望Python或R返回一些有意义的日期给你。通过给pandas
提供一个缺失年份的日期字符串,您将让图书馆的开发人员猜测年份应该是多少。在这两种情况下,你可以强制今年通过执行以下是2016
:
熊猫:
df1 = pd.DataFrame(data = {'Date':['1-Mar']*6})
df1['Date'] = pd.to_datetime(df1['Date']+"-2016",format="%d-%b-%Y")
产量:
0 2016-03-01
1 2016-03-01
2 2016-03-01
3 2016-03-01
4 2016-03-01
5 2016-03-01
[R:
df1 <- data.frame(Date = rep('1-Mar',6))
as.Date(paste(df1$Date,"2016",sep = "-"), format = "%d-%b-%Y")
产量:
"2016-03-01" "2016-03-01" "2016-03-01" "2016-03-01" "2016-03-01" "2016-03-01"
您可以在今年任何你喜欢的,但你不能指望在语言或库,为您提供您愿意的话结果。有时候会有一些主观性进入设计语言或图书馆。底线是:确保你没问题,如果你的开始日期字符串不完整,仍然可以使用你提供的任何东西。
我希望这会有所帮助。
答
我不能帮你(1),但(2):
import pytz
pd.to_datetime(df['Date'], format = "%d-%b").replace(year=2016, tzinfo=pytz.utc)
在Python中,如果你没有在指定的日期时间一年,蟒蛇将其设置为0,你会得到1900年,因为datetime
的year
组件是自1900年以来的年数)。
2):'pd.to_datetime(df ['Date'] +“ - 2016”,format =“%d-%b-%Y”)'。 – Abdou
1):如果日期字符串没有完全指定日期,则返回的答案可能是系统特定的。最常见的行为是假设失去的一年,一月或一天是当前的一个。 – Abdou