小编Rom*_*rés的帖子

什么是 Python 映射?

假设我有一个函数func和一个objclass对象Class。我有以下错误:

>>> func(**obj)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: func() argument after ** must be a mapping, not Class
Run Code Online (Sandbox Code Playgroud)

因此我的问题是:什么是映射?所有映射都是 的子类吗dict?或者是否存在必须实现才能被视为映射的方法列表(例如__getitem__,,__iter__...) ?Class

python syntax typeerror

9
推荐指数
2
解决办法
1万
查看次数

pip 从 GitHub 安装最新版本

我知道我可以使用以下命令安装主分支:

pip install git+https://github.com/USER/REPO
Run Code Online (Sandbox Code Playgroud)

我还知道我可以通过以下方式安装特定版本:

pip install git+https://github.com/USER/REPO@RELEASE
Run Code Online (Sandbox Code Playgroud)

但是有没有办法安装最新版本(GitHub 在https://github.com/USER/REPO/releases/latest返回的版本)?我尝试过以下方法:

pip install git+https://github.com/USER/REPO@latest
Run Code Online (Sandbox Code Playgroud)

但它失败了:

ERROR: Command errored out with exit status 1: git checkout -q latest
Run Code Online (Sandbox Code Playgroud)

编辑:这个问题不是Pip does not installlatest GitHub release的重复。后者是关于如何安装特定版本和/或从主分支安装,但不是从最新版本安装。

python pip github

9
推荐指数
1
解决办法
5205
查看次数

Pandas groupby:有效链接多个函数

我需要对一个 DataFrame 进行分组,并在每个组上应用多个链式函数。

\n

我的问题与 pandas 基本相同- Groupby 两个函数cumsum然后应用于shift每个组。

\n

那里有关于如何获得正确结果的答案,但它们的性能似乎不太理想。因此,我的具体问题是:是否有比我下面描述的方法更有效的方法?

\n
\n

首先是一些大的测试数据:

\n
from string import ascii_lowercase\n\nimport numpy as np\nimport pandas as pd\n\n\nn = 100_000_000\nnp.random.seed(0)\ndf = pd.DataFrame(\n    {\n        "x": np.random.choice(np.array([*ascii_lowercase]), size=n),\n        "y": np.random.normal(size=n),\n    }\n)\n
Run Code Online (Sandbox Code Playgroud)\n

下面是各个功能的性能:

\n
%timeit df.groupby("x")["y"].cumsum()\n4.65 s \xc2\xb1 71 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop each)\n%timeit df.groupby("x")["y"].shift()\n5.29 s \xc2\xb1 54.1 ms per loop (mean \xc2\xb1 std. dev. of 7 runs, 1 loop …
Run Code Online (Sandbox Code Playgroud)

python performance pandas pandas-groupby

9
推荐指数
1
解决办法
826
查看次数

方括号内的星号表达式

似乎星号表达式不能像在括号内那样在方括号内使用:

>>> import numpy as np
>>> x = np.ones((3, 4))
>>> x[:, *(None, None), :]
  File "<stdin>", line 1
    x[:, *(None, None), :]
         ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

尽管人们会期望后者输出与

>>> x[(slice(None), *(None, None), slice(None))]
array([[[[ 1.,  1.,  1.,  1.]]],


       [[[ 1.,  1.,  1.,  1.]]],


       [[[ 1.,  1.,  1.,  1.]]]])
Run Code Online (Sandbox Code Playgroud)

您是否知道不允许这样做的任何充分理由,以及是否有计划在下一个 Python 版本中支持它?

python syntax numpy

5
推荐指数
1
解决办法
498
查看次数

使用 PrestoSQL 进行 32 位或 64 位浮点除法

在 Presto SQL 中,SELECT 1 / 3返回0,因为/执行整数除法。

SELECT 1.0 / 3返回0.3...我怎样才能得到0.3333333333?(即,更具体地说,32 位或 64 位精度而不是第一个小数截断?)

sql numbers presto trino

5
推荐指数
1
解决办法
4337
查看次数

为什么Python浮点数具有real和imag属性?

至少在Python 3中,float具有属性realimag以及方法conjugate()。既然issubclass(float, complex)评估到了False,这些的原因是什么?

python

4
推荐指数
1
解决办法
51
查看次数

Presto SQL 中的唯一行标识符

我处理没有唯一行标识符的 Presto SQL 表。识别特定记录的唯一方法是查询其所有字段。

Presto 中是否存在某种隐藏字段(例如 ),ROW_PRIMARY_KEY可以让我唯一地标识表中的记录?

sql presto amazon-athena

4
推荐指数
1
解决办法
6948
查看次数

如何在 PrestoSQL 中计算中位数?

Presto SQL 中似乎没有为此目的的本机函数。你知道有什么方法可以有效地聚合一个组并返回它的中位数吗?

sql group-by aggregate-functions median presto

4
推荐指数
1
解决办法
5601
查看次数