我有数据点,其横坐标是datetime.datetime具有时区的对象(它们tzinfo碰巧是bson.tz_util.FixedOffset通过MongoDB获得的).
当我用它们绘图时scatter(),刻度标签的时区是什么?
改变timezone在matplotlibrc不改变显示的情节什么(我一定是误解了对时区的讨论的Matplotlib文档中).
我尝试了一点plot()(而不是scatter()).给定一个日期时,它会绘制它并忽略时区.但是,当给定多个日期时,它使用固定的时区,但是如何确定?我在文档中找不到任何内容.
最后,plot_date()应该是这些时区问题的解决方案吗?
我正在尝试检查今天的日期(dd-mm-yyyy格式)是否在给定范围内。
我的代码只检查日期,而不是月份或年份......你能帮我看看有什么问题吗?
import datetime
TODAY_CHECK = datetime.datetime.now()
TODAY_RESULT = ('%s-%s-%s' % (TODAY_CHECK.day, TODAY_CHECK.month, TODAY_CHECK.year))
if '26-11-2017' <= TODAY_RESULT <= '30-11-2017':
print "PASS!"
else:
print "YOU SHALL NOT PASS, FRODO."
Run Code Online (Sandbox Code Playgroud)
import datetime
TODAY_CHECK = datetime.datetime.now()
TODAY_RESULT = ('%s-%s-%s' % (TODAY_CHECK.day, TODAY_CHECK.month, TODAY_CHECK.year))
if '26-11-2017' <= TODAY_RESULT <= '01-12-2017':
print "PASS!"
else:
print "YOU SHALL NOT PASS, FRODO."
Run Code Online (Sandbox Code Playgroud) 我有时间使用dtype numpy.longdouble,当我试图将这些值与timedelta函数一起使用时,我遇到了错误.但是当我把它转换成numpy.float64一切都很好.有人可以解释一下这种行为吗?
import numpy as np
from datetime import timedelta
t1 = np.array([1000], dtype=np.longdouble)
t2 = np.array([1000], dtype=np.float64)
In [166]: timedelta(seconds=t1[0])
TypeError: unsupported type for timedelta seconds component: numpy.float64
In [167]: timedelta(seconds=t2[0])
Out[167]: datetime.timedelta(0, 1000)
In [168]: timedelta(seconds=t1[0].astype(np.float64))
Out[168]: datetime.timedelta(0, 1000)
Run Code Online (Sandbox Code Playgroud)
当我试图看到变量的dtypes时,它们看起来相似但不相同:
In [172]: t1[0].dtype
Out[172]: dtype('float64')
In [173]: t2[0].dtype
Out[173]: dtype('float64')
In [174]: np.longdouble == np.float64
Out[174]: False
In [175]: t1[0].dtype == t2[0].dtype
Out[175]: True
Run Code Online (Sandbox Code Playgroud)
奇怪的是,它不适用于np.int32和np.int64:
t3 = np.array([1000], dtype=np.int32)
t4 = np.array([1000], …Run Code Online (Sandbox Code Playgroud) 我有一个 Pandas 数据框,其中有 2 列代表开始时间戳和结束时间戳:
start end
2016-06-13 2016-07-20
Run Code Online (Sandbox Code Playgroud)
这些列的数据类型是datetime64[ns].
我现在想创建一个新列,显示月份的差异:
start end duration
2016-06-13 2016-07-20 1.1
Run Code Online (Sandbox Code Playgroud)
我尝试的是执行以下操作:
df['duration'] = df['end'] - df['start']
Run Code Online (Sandbox Code Playgroud)
结果如下:
start end duration
2016-06-13 2016-07-20 37 days 00:00:00.000000000
Run Code Online (Sandbox Code Playgroud)
然后我尝试执行以下操作:
df['duration'] = df['end'] - df['start']).dt.months
Run Code Online (Sandbox Code Playgroud)
但这会产生以下错误
AttributeError:“TimedeltaProperties”对象没有属性“months”
duration该列的数据类型是timedelta64[ns].
我怎样才能达到预期的结果?
我有一个示例 csv 数据文件。
Date
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
22-01-1943
15-10-1932
23-11-1910
04-05-2000
02-02-1943
01-01-1943
28-08-1943
31-12-1943
Run Code Online (Sandbox Code Playgroud)
接下来我试过了
In [174]: %timeit df = pd.read_csv("a.csv", parse_dates=["Date"])
1.5 ms ± 178 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
In [175]: %timeit df = pd.read_csv("a.csv", parse_dates=["Date"], infer_datetime_format=True)
1.73 ms ± 45 µs per loop (mean ± std. …Run Code Online (Sandbox Code Playgroud) 我正在尝试消除烛台中的日期时间间隙(间隙是股市休市的时间段,因此没有数据)。似乎无法找到使用绘图对象的良好解决方案。有没有可行的办法呢?
我的代码如下(使用绘图对象):
import dash
import dash_core_components as dcc
import dash_table
import pandas as pd
import dash_html_components as html
import numpy as np
from dash.dependencies import Output, Input, State
import plotly.graph_objects as go
import yfinance as yf
import plotly.express as px
from datetime import datetime, timedelta
from pytz import timezone
import dash_bootstrap_components as dbc
df= yf.Ticker('aapl')
df = df.history(interval="5m",period="5d")
df["Datetime"] = df.index
trace1 = {
'x': df.Datetime,
'open': df.Open,
'close': df.Close,
'high': df.High,
'low': df.Low,
'type': 'candlestick',
'name': 'apple,
'showlegend': False …Run Code Online (Sandbox Code Playgroud) python candlestick-chart python-datetime yahoo-finance plotly-dash
我是SQLAlchemy的新手(但不是那么新).我正在使用0.9.3版本的项目.我想对SQLite数据库进行查询,过滤结果以获取那些没有时间戳的对象,或者自上次更新后超过24小时(在同一列上).
问题是,我没有确切知道如何实现时间过滤部分,我做了一个IPython Notebook会话,所以人们可以看看尝试寻找我的问题的答案有多长:
在[1]中:
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column, Unicode, DateTime, Integer, create_engine
from sqlalchemy.orm import sessionmaker, relationship, backref
from datetime import datetime
engine = create_engine('sqlite:///:memory:')
Base = declarative_base()
Session = sessionmaker(bind=engine)
session = Session()
Run Code Online (Sandbox Code Playgroud)
在[2]中:
class Product(Base):
__tablename__ = "product"
id = Column(Integer, primary_key=True)
name = Column(Unicode(140), unique=True, nullable=False)
department = Column(Unicode(20))
added = Column(DateTime, default=datetime.now)
last_time_parsed = Column(DateTime)
def repr(self):
return "<Product(name=%s, department=%s, added=%s, last_time_parsed=%s)>" % (
self.name, self.department, self.added, self.last_time_parsed)
Run Code Online (Sandbox Code Playgroud)
在[3]中:
# create the …Run Code Online (Sandbox Code Playgroud) 我正在从传感器收集一些数据,我从中获取时间戳,如下所示:
"time": {
"seconds": 40,
"year": 115,
"month": 5,
"hours": 7,
"time": 1434549820776,
"date": 17,
"minutes": 3,
"day": 3,
"timezoneOffset": 420
},
Run Code Online (Sandbox Code Playgroud)
我有一个python脚本来处理来自传感器的数据(传入的数据是json格式),我取值time并转换成可读的时间格式.
我用过datetime.fromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S'),然后回来了'2015-06-17 15:03:40'
当作为datetime.utcfromtimestamp(1434549820776/1000).strftime('%Y-%m-%d %H:%M:%S')
退换:'2015-06-17 14:03:40'
你可以有一个小时的差异,所以我的问题是哪一个更好用?
如果我想在我的程序中添加100年,为什么它显示错误的日期?
import datetime
stringDate= "January 10, 1920"
dateObject= datetime.datetime.strptime(stringDate, "%B %d, %Y")
endDate= dateObject+datetime.timedelta(days=100*365)
print dateObject.date()
print endDate.date()
Run Code Online (Sandbox Code Playgroud) 我正在尝试通过以下方式在保存和加载时根据时区修改日期时间:
输入日期时间以及输入时区被发送到服务器,服务器应更新日期时间以反映时区。所以当它保存在数据库(PostregSQL)中时,保存的是UTC时间(当然是在时区引起的偏移之后)。
为了反映这一点,这里有一个以相同方式失败的简单示例:
一些进口:
>>> import datetime
>>> import pytz
>>> from apps.myapp.models import Project
Run Code Online (Sandbox Code Playgroud)
创建两个输入:
>>> input_date = timezone.now()
>>> input_date
datetime.datetime(2017, 2, 7, 16, 7, 14, 377429, tzinfo=<UTC>)
>>> current_tz = pytz.timezone('America/New_York')
>>> current_tz
<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>
Run Code Online (Sandbox Code Playgroud)
如您所见,时区不是5h( 24 - 19 = 5),而是4h56. 在这个阶段我认为没关系,它可能与夏令时有关。
现在我正在替换输入日期的时区:
>>> input_date = input_date.replace(tzinfo=current_tz)
>>> input_date
datetime.datetime(2017, 2, 7, 16, 7, 14, 377429, tzinfo=<DstTzInfo 'America/New_York' LMT-1 day, 19:04:00 STD>)
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,时间没有改变,但时区改变了,这很好。
我将这个值分配给一个项目(launch_date是一种DateTimeField没有任何具体的选项): …
python ×10
python-datetime ×10
datetime ×2
python-3.x ×2
timedelta ×2
timezone ×2
django ×1
matplotlib ×1
numpy ×1
orm ×1
pandas ×1
plot ×1
plotly-dash ×1
python-2.7 ×1
sqlalchemy ×1
time ×1
types ×1