如何将字符串的DataFrame列(以dd/mm/yyyy格式)转换为日期时间?
我正在使用:
str(datetime.datetime.today()).split()[0]
Run Code Online (Sandbox Code Playgroud)
以YYYY-MM-DD的形式返回今天的日期.
是否有一种不那么粗暴的方法来实现这一目标
我有一个使用datetime.utcnow()创建并保存在数据库中的python datetime实例.
为了显示,我想使用默认的本地时区将从数据库检索的日期时间实例转换为本地日期时间(即,就像使用datetime.now()创建日期时间一样).
如何仅使用python标准库将UTC日期时间转换为本地日期时间(例如,没有pytz依赖项)?
似乎一个解决方案是使用datetime.astimezone(tz),但是如何获得默认的本地时区?
鉴于string在这种格式"HH:MM"中,例如"03:55",一个表示3小时55分钟.
我想将它转换为datetime.time对象以便于操作.最简单的方法是什么?
请参阅以下代码:
import datetime
import pytz
fmt = '%Y-%m-%d %H:%M:%S %Z'
d = datetime.datetime.now(pytz.timezone("America/New_York"))
d_string = d.strftime(fmt)
d2 = datetime.datetime.strptime(d_string, fmt)
print d_string
print d2.strftime(fmt)
Run Code Online (Sandbox Code Playgroud)
输出是
2013-02-07 17:42:31 EST
2013-02-07 17:42:31
Run Code Online (Sandbox Code Playgroud)
时区信息在翻译中丢失了.
如果我将'%Z'切换为'%z',我明白了
ValueError: 'z' is a bad directive in format '%Y-%m-%d %H:%M:%S %z'
Run Code Online (Sandbox Code Playgroud)
我知道我可以使用python-dateutil,但我发现它很棒,我无法在datetime实现这个简单的功能,并且必须引入更多的依赖?
我有这样格式的.csv文件
timestmp, p
2014/12/31 00:31:01:9200, 0.7
2014/12/31 00:31:12:1700, 1.9
...
Run Code Online (Sandbox Code Playgroud)
当读取pd.read_csv并使用时间str转换为datetime时pd.to_datetime,性能会急剧下降.这是一个最小的例子.
import re
import pandas as pd
d = '2014-12-12 01:02:03.0030'
c = re.sub('-', '/', d)
%timeit pd.to_datetime(d)
%timeit pd.to_datetime(c)
%timeit pd.to_datetime(c, format="%Y/%m/%d %H:%M:%S.%f")
Run Code Online (Sandbox Code Playgroud)
而且表现是:
10000 loops, best of 3: 62.4 µs per loop
10000 loops, best of 3: 181 µs per loop
10000 loops, best of 3: 82.9 µs per loop
Run Code Online (Sandbox Code Playgroud)
那么,我怎样才能提高pd.to_datetime从csv文件中读取日期的性能?
我已将数据文件加载到Python pandas数据帧中.我有一个格式的日期时间列2015-07-18 13:53:33.280.
我需要做的是创建一个新的列,将其四舍五入到最接近的四分之一小时.因此,上述日期将四舍五入为2015-07-18 13:45:00.000.
我怎么在熊猫里这样做?我尝试使用此处的解决方案,但收到'Series' object has no attribute 'year'错误.
什么是最好的方式来看看当前时间是否介于说10:30 AM和... 之间4:30 PM.
我能想到以下几点,不确定如何正确:
from datetime import datetime
nw = datetime.now()
hrs = nw.hour;mins = nw.minute;secs = nw.second;
zero = timedelta(seconds = secs+mins*60+hrs*3600)
st = nw - zero # this take me to 0 hours.
time1 = st + timedelta(seconds=10*3600+30*60) # this gives 10:30 AM
time2 = st + timedelta(seconds=16*3600+30*60) # this gives 4:30 PM
if nw>= time1 or nw <= time2:
print "yes, within the interval"
Run Code Online (Sandbox Code Playgroud)
请告诉我,如果这是正确的方法,可以写出更好的东西吗?
给定ISO 8601持续时间字符串,如何将其转换为datetime.timedelta?
这不起作用:
timedelta("PT1H5M26S", "T%H%M%S")
Run Code Online (Sandbox Code Playgroud) 如何在 Python 中获取下个月的第一个日期?例如,如果现在是 2019-12-31,则下个月的第一天是 2020-01-01。如果现在是 2019-08-01,那么下个月的第一天就是 2019-09-01。
我想出了这个:
import datetime
def first_day_of_next_month(dt):
'''Get the first day of the next month. Preserves the timezone.
Args:
dt (datetime.datetime): The current datetime
Returns:
datetime.datetime: The first day of the next month at 00:00:00.
'''
if dt.month == 12:
return datetime.datetime(year=dt.year+1,
month=1,
day=1,
tzinfo=dt.tzinfo)
else:
return datetime.datetime(year=dt.year,
month=dt.month+1,
day=1,
tzinfo=dt.tzinfo)
# Example usage (assuming that today is 2021-01-28):
first_day_of_next_month(datetime.datetime.now())
# Returns: datetime.datetime(2021, 2, 1, 0, 0)
Run Code Online (Sandbox Code Playgroud)
这是正确的吗?有没有更好的办法?
python ×10
python-datetime ×10
datetime ×5
pandas ×3
csv ×1
dataframe ×1
python-2.7 ×1
time ×1
timedelta ×1
timezone ×1