问题:
我有一个记录数据行的表foo.每次更新行时,都会插入一个新行以及修订号.该表看起来像:
id rev field
1 1 test1
2 1 fsdfs
3 1 jfds
1 2 test2
Run Code Online (Sandbox Code Playgroud)
请注意,在表中,最后一条记录是第一行的较新版本.
有没有人知道查询最新版本的行的有效方法,以及特定版本的记录?例如,对于一个查询rev=2将返回图2,3和第4行(未更换的第一行虽然)而用于查询rev=1的产率的那些行与转<= 1,在重复的ID的情况下,一个具有较高版本号是选择(记录:1,2,3).
我真的不确定这在SQL Server中是否可行...
我不想以迭代的方式返回结果.
我想选择数组的某些元素,并根据值执行加权平均计算.但是,使用过滤条件会破坏数组的原始结构.arr它的形状(2, 2, 3, 2)变成了一维的阵列.这对我来说毫无用处,因为并非所有这些元素都需要在以后相互组合(但是它们的子阵列).我怎样才能避免这种扁平化呢?
>>> arr = np.asarray([ [[[1, 11], [2, 22], [3, 33]], [[4, 44], [5, 55], [6, 66]]], [ [[7, 77], [8, 88], [9, 99]], [[0, 32], [1, 33], [2, 34] ]] ])
>>> arr
array([[[[ 1, 11],
[ 2, 22],
[ 3, 33]],
[[ 4, 44],
[ 5, 55],
[ 6, 66]]],
[[[ 7, 77],
[ 8, 88],
[ 9, 99]],
[[ 0, 32],
[ 1, 33],
[ 2, 34]]]])
>>> arr.shape
(2, …Run Code Online (Sandbox Code Playgroud) 我无法关闭由主管发起的Docker容器supervisorctl stop all.即使通过supervisorctl status显示容器已关闭,docker ps并ps指示它们实际上仍在运行.
咨询主管文档,了解发送给流程的supervisorctl stop <name>显示操作,SIGTERM然后SIGKILL在一段宽限期后仍然运行.我试图手动执行此操作并发现
SIGTERM发送到docker run进程没有做任何事情SIGKILL确实杀了进程,但实际上并没有更新docker.docker ps显示此容器仍在运行SIGKILL不关闭容器问题是:如何通过主管正确关闭Docker容器?
这是我模拟主管的实验结果:
起始位置:foo-1并且bar-1正在运行(我将GCE容器留在其中,以防它们产生影响).ps aux并且docker ps是同步的.
me@devenv:~$ sudo docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
5ba70bf8937f me/app:foo "/bin/sh -c 'supervi 5 minutes ago Up 5 minutes foo-1
e1a684bcfceb me/app:bar "/bin/sh -c 'supervi 5 minutes ago …Run Code Online (Sandbox Code Playgroud) 我想将从数据透视表派生的Pandas DataFrame转换为行表示,如下所示.
这就是我所在的地方:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'goods': ['a', 'a', 'b', 'b', 'b'],
'stock': [5, 10, 30, 40, 10],
'category': ['c1', 'c2', 'c1', 'c2', 'c1'],
'date': pd.to_datetime(['2014-01-01', '2014-02-01', '2014-01-06', '2014-02-09', '2014-03-09'])
})
# we don't care about year in this example
df['month'] = df['date'].map(lambda x: x.month)
piv = df.pivot_table(["stock"], "month", ["goods", "category"], aggfunc="sum")
piv = piv.reindex(np.arange(piv.index[0], piv.index[-1] + 1))
piv = piv.ffill(axis=0)
piv = piv.fillna(0)
print piv
Run Code Online (Sandbox Code Playgroud)
结果
stock
goods a b
category …Run Code Online (Sandbox Code Playgroud) 我的术语有点偏,所以请在必要时随意纠正.我想重载javascript和'基类'中的函数,以利用重载方法以及继承类来访问基类方法.到目前为止,我想出了一个(工作)混合jquery.extend()和对象文字,但这看起来并不漂亮.我想知道是否有更好的方法(可以使用jquery).
var Base = new function(args, m) {
$.extend(this, m);
var self = this;
this.bar = function() {
self.foo();
}
this.foo = function() {
self.blah();
}
this.dosomething = function() {}
};
var Child = function(arg1) {
$.extend(this, new Base(args, {
blah: function() {
self.dosomething()
}
}));
}
Run Code Online (Sandbox Code Playgroud) 是否有可能获得行的行号(即"索引值的序号")DataFrame而不添加包含行号的额外行(索引可以是任意的,即使是MultiIndex)?
>>> import pandas as pd
>>> df = pd.DataFrame({'a': [2, 3, 4, 2, 4, 6]})
>>> result = df[df.a > 3]
>>> result.iloc[0]
a 4
Name: 2, dtype: int64
# but how can I get the original row index of iloc[0] in df?
Run Code Online (Sandbox Code Playgroud)
我本可以做到df['row_index'] = range(len(df))哪个会保留原来的行号,但我想知道Pandas是否有内置的方式来做这个.
我对运行转换,加载数据和易用性的速度印象深刻,Pandas并希望利用所有这些不错的属性(以及其他)来建模一些大型数据集(~100-200k行,<20列).目的是使用某些计算节点上的数据,还可以通过浏览器提供数据集的视图Flask.
我目前正在使用Postgres数据库来存储数据,但数据的导入(来自csv文件)是缓慢,繁琐且容易出错的,并且数据从数据库中获取并处理它并不容易.导入后数据永远不会被更改(没有CRUD操作),所以我认为将它存储为几个pandas DataFrame(以hdf5格式存储并通过pytables加载)是理想的.
问题是:
(1)这是一个好主意,有什么需要注意的事项?(例如,我不期望并发性问题,因为DataFrames(应该?)是无状态和不可变的(从应用程序端处理)).还有什么需要注意的?
(2)一旦将数据从hdf5文件加载到a中DataFrame,我将如何缓存数据,因此不需要为每个客户端请求(至少是最新/频繁的数据帧)加载数据.Flask(或werkzeug)有一个SimpleCaching类,但在内部,它会在访问时挑选数据并取消激活缓存的数据.我想知道在我的特定情况下是否有必要(假设缓存的对象是不可变的).此外,当系统与Gunicorn一起部署时,是否可以使用这种简单的缓存方法(是否可以拥有静态数据(缓存)并且可以并发(不同进程?)请求访问同一缓存?).
我意识到这些问题很多,但在我投入更多时间并构建概念验证之前,我认为我在这里得到了一些反馈.欢迎任何想法.
在Convert recursive function to view的基础上,我想通过创建节点父节点的快照来加速从图中任意节点到其根节点的路径检索.这个想法是递归树遍历受到中间快照的限制,这些快照避免了任何进一步的递归,从而加快了执行时间.我还没有进行负载测试,所以我不知道这是如何在这个简单的例子之外表现的,但是早期的试验已经表明了一些瓶颈.我很乐意就如何加快/简化查询提出意见.我正在使用Postgres 9.2.2.0(20).
DROP TABLE IF EXISTS revision CASCADE;
CREATE TABLE revision (
id serial primary key,
parent_revision_id int references revision(id),
username varchar(128),
ts timestamp without time zone
);
DROP TABLE IF EXISTS revision_snapshot CASCADE;
CREATE TABLE revision_snapshot (
id serial primary key,
revision_id int,
parent_revision_id int,
depth int
);
CREATE OR REPLACE FUNCTION create_revision_snapshot(_rev int)
RETURNS void AS
$func$
DELETE FROM revision_snapshot WHERE revision_id=$1;
INSERT INTO revision_snapshot (revision_id, parent_revision_id, depth)
(SELECT $1, id, depth …Run Code Online (Sandbox Code Playgroud) postgresql performance stored-procedures common-table-expression postgresql-9.2
我实现了ZMQ的最后值缓存(LVC)示例(http://zguide.zeromq.org/php:chapter5#Last-Value-Caching),但无法让第二个订阅者在后端注册.
订户首次登机时,event[0] == b'\x01'条件得到满足并且缓存的值被发送,但第二个订户(同一主题)甚至没有注册(if backend in events:永远不会).其他一切都很好.数据从发布者传递给订阅者(全部).
这可能是什么原因?后端的连接方式是否正确?这种模式是否只适用于第一个订户?
更新
当我将第二个订阅者订阅到另一个主题时,我得到了正确的行为(即\x01订阅时).这似乎对第一个用户起作用.是ZeroMQ中的错误吗?
更新2
下面是一个最小的工作的例子,表明LVC模式不工作(至少不是在这里实施的方式).
# subscriber.py
import zmq
def main():
ctx = zmq.Context.instance()
sub = ctx.socket(zmq.SUB)
sub.connect("tcp://127.0.0.1:5558")
# Subscribe to every single topic from publisher
print 'subscribing (sub side)'
sub.setsockopt(zmq.SUBSCRIBE, b"my-topic")
poller = zmq.Poller()
poller.register(sub, zmq.POLLIN)
while True:
try:
events = dict(poller.poll(1000))
except KeyboardInterrupt:
print("interrupted")
break
# Any new topic data we cache and then forward
if sub in events:
msg = …Run Code Online (Sandbox Code Playgroud) python ×6
pandas ×3
postgresql ×2
arrays ×1
caching ×1
docker ×1
flask ×1
indexing ×1
javascript ×1
jquery ×1
numpy ×1
oop ×1
overloading ×1
performance ×1
pivot-table ×1
proxy ×1
pytables ×1
sockets ×1
sql ×1
sql-server ×1
sqlalchemy ×1
supervisord ×1
t-sql ×1
zeromq ×1