小编par*_*asu的帖子

Pandas 多索引数据框到嵌套字典

假设我有以下数据框

df = pd.DataFrame({0: {('A', 'a'): 1, ('A', 'b'): 6, ('B', 'a'): 2, ('B', 'b'): 7},
 1: {('A', 'a'): 2, ('A', 'b'): 7, ('B', 'a'): 3, ('B', 'b'): 8},
 2: {('A', 'a'): 3, ('A', 'b'): 8, ('B', 'a'): 4, ('B', 'b'): 9},
 3: {('A', 'a'): 4, ('A', 'b'): 9, ('B', 'a'): 5, ('B', 'b'): 1},
 4: {('A', 'a'): 5, ('A', 'b'): 1, ('B', 'a'): 6, ('B', 'b'): 2}})
Run Code Online (Sandbox Code Playgroud)

看起来是这样的:

     0  1  2  3  4
A a  1  2  3  4 …
Run Code Online (Sandbox Code Playgroud)

pandas

8
推荐指数
1
解决办法
2690
查看次数

高效的numpy argsort与条件同时保持原始指数

我想知道在给定条件的情况下,在保留原始索引的同时,最有效的方法是做一个数组的argsort

import numpy as np

x = np.array([0.63, 0.5, 0.7, 0.65])

np.argsort(x)
#Corrected argsort(x) solution
Out[99]: array([1, 0, 3, 2])
Run Code Online (Sandbox Code Playgroud)

我想在x> 0.6的条件下对这个数组进行argsort.由于0.5 <0.6,因此不应包括指数1.

x = np.array([0.63, 0.5, 0.7, 0.65])
index = x.argsort()
list(filter(lambda i: x[i] > 0.6, index))

[0,3,2]
Run Code Online (Sandbox Code Playgroud)

这是低效的,因为它没有矢量化.

编辑:过滤器将消除大多数元素.理想情况下,它首先进行过滤,然后进行排序,同时保留原始索引.

python numpy

6
推荐指数
2
解决办法
1215
查看次数

通过 SQS 将消息发布到 Elastic Beanstalk 工作线程环境

我在弹性 beanstalk 上有一个带有 Web 服务器和工作环境的 docker 应用程序。

工作环境当前通过 cron 运行计划作业。我正在尝试将服务器连接到工作人员以实现以下目标:

  1. 客户端向服务器发送请求(/trigger_job)
  2. 服务器通过向 SQS 队列 (/perform_job) 发送 JSON 消息来将作业卸载给工作人员
  3. Worker 通过读取来自 SQS 的消息来执行作业

我无法找到有关 JSON 消息应是什么样子的文档。官方文档中提到了一些HTTP headers 。但没有提到标头来指定工作环境中所需的端点。

# server.py
from bottle import post, HTTPResponse


@post('/trigger_job')
def trigger_worker_job():
    # should send a JSON message to sqs to trigger the '/perform_job'
    # Need help with what the JSON message looks like
    return HTTPResponse(status=200, body={'Msg': 'Sent message'})
Run Code Online (Sandbox Code Playgroud)
# worker.py
from bottle import post, HTTPResponse


@post('/perform_job')
def perform_job():
    # job is performed …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services amazon-elastic-beanstalk

6
推荐指数
1
解决办法
2014
查看次数