如何解决当原始变量中不包含各个变量时,使用默认值转换一系列日期时间格式
我正在从csv文件导入数据。我df上的一列是包含日期时间信息的列,但是它的数据是动态的。有时它包含时间信息,有时不包含;有时它会通知时区,有时不会。
数据以2516 non-null object
以下是一个仅包含日期-没有时间和时区的系列的示例:
datetime
0 2020-08-15
1 2020-08-14
2 2020-08-13
3 2020-08-12
我正在使用pd.to_datetime
和dt.strftime
转换为日期时间以更改数据格式。所以对于下面的代码...
df['datetime'] = df['datetime'].apply(pd.to_datetime,format='%Y-%m-%d')
df['datetime'] = df['datetime'].dt.strftime('%y-%m-%d-%Z-%H-%M-%S')
...和示例数据,最终得到以下输出:
0 20-08-15--00:00:00
1 20-08-14--00:00:00
2 20-08-13--00:00:00
3 20-08-12--00:00:00
请注意,在一起有两个--
,因为源中没有时区,并且%Z
不返回任何内容;和时间值最终以00:00:00
结束,因为两者均未提供。
我想要实现的是在源不提供时区的默认值添加到时区,以便变得明确;并添加默认时间值,以填充起点也不提供这些值的条目。
是否可以像对函数参数的默认值那样执行某些操作?
def funct(arg1,arg2=x,arg3="xyz")
解决方法
如果要使用本地化,则需要声明您的语言环境。
import datetime as dt
import pandas as pd
df = pd.DataFrame({"date":pd.date_range(dt.datetime(2020,8,12),dt.datetime(2020,15))})
df["datestr"] = df["date"].dt.tz_localize("Europe/London").dt.strftime('%y-%m-%d-%Z-%H-%M-%S')
输出
date datestr
2020-08-12 20-08-12-BST-00-00-00
2020-08-13 20-08-13-BST-00-00-00
2020-08-14 20-08-14-BST-00-00-00
2020-08-15 20-08-15-BST-00-00-00
,
我要去做的事情是dateutil。因此,对于您的情况:
from dateutil.parser import parse
from dateutil import tz
dt = parse('1970-01-01 12:00+0')
datetime.datetime(1970,1,12,tzinfo=tzutc())
parse('2020-08-15',default=dt)
datetime.datetime(2020,15,tzinfo=tzutc())
print(parse('2020-08-15',default=dt))
2020-08-15 12:00:00+00:00
dt
被创建为解析模板。输入日期时间字符串未提供的任何内容都将替换为模板值。在这种情况下,时间和时区。您可以在apply函数中代替它。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。