小编sha*_*ker的帖子

Pandas Series.apply()和Series.map()有什么区别?

Series.map():

使用输入对应(可以是字典,系列或函数)映射系列的值

Series.apply()

调用Series的值的函数.可以是ufunc(适用于整个系列的NumPy函数)或仅适用于单个值的Python函数

apply()似乎它确实做了大部分事情map(),在应用矢量化操作时矢量化标量函数.同时map()允许对空值处理进行一定程度的控制.除了Python apply()map()函数的历史类比之外,是否有理由在一般情况下更喜欢使用其中一个?为什么这些功能不能合并?

python numpy vectorization

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

检测Python是否运行在Conda环境中

是否可以检测Python是否运行在Conda环境中?

我更喜欢不依赖于在子进程中运行 shell 命令的解决方案,但如果这是唯一的选择,那就这样吧。我假设有一些简单的东西,比如在环境中设置的环境变量,但这种东西很难搜索(而且 Conda 文档不是很好)。

python environment-variables conda

7
推荐指数
2
解决办法
1270
查看次数

使用加密的选项文件将 Python 连接到 MySQL

我曾经用密码mysql_config_editor创建一个.mylogin.cnf文件。我知道它工作正常,因为我可以使用它通过命令行实用程序mysql和 R 包进行连接RMySQL而不会出现问题。

但是,当尝试使用 Mysql-Connector/Python 进行连接时:

# using mysql-connector-python-rf
import os
import mysql.connector
con = mysql.connector.connect(option_files=os.path.expanduser('~/.mylogin.cnf'))
Run Code Online (Sandbox Code Playgroud)

或使用 PyMySQL:

# using pymysql
import os
import pymysql
con = pymysql.connect(option_files=os.path.expanduser('~/.mylogin.cnf'))
Run Code Online (Sandbox Code Playgroud)

我犯了同样的错误:

---------------------------------------------------------------------------
UnicodeDecodeError                        Traceback (most recent call last)
<ipython-input-64-d17e56ef7010> in <module>()
----> 1 con = mysql.connector.connect(option_files=os.path.expanduser('~/.mylogin.cnf'))

/usr/local/lib/python3.5/site-packages/mysql/connector/__init__.py in connect(*args, **kwargs)
    140     # Option files
    141     if 'option_files' in kwargs:
--> 142         new_config = read_option_files(**kwargs)
    143         return connect(**new_config)
    144 

/usr/local/lib/python3.5/site-packages/mysql/connector/optionfiles.py in read_option_files(**config)
     66             config['option_files'] = …
Run Code Online (Sandbox Code Playgroud)

python mysql python-3.x

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

Scala Spark - 定义的非法开始

这可能是一个愚蠢的新手错误,但我在运行我认为是基本 Scala 代码时遇到错误(在 Spark 笔记本中,通过 Jupyter 笔记本):

val sampleDF = spark.read.parquet("/data/my_data.parquet")

sampleDF
  .limit(5)
  .write
  .format("jdbc")
  .option("url", "jdbc:sqlserver://sql.example.com;database=my_database")
  .option("dbtable", "my_schema.test_table")
  .option("user", "foo")
  .option("password", "bar")
  .save()
Run Code Online (Sandbox Code Playgroud)

错误:

<console>:1: error: illegal start of definition
    .limit(5)
    ^
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

scala apache-spark jupyter-notebook

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

错误:无法为使用 PEP 517 且无法直接安装的摆锤构建轮子

请帮忙。尝试了我可以在网上找到的大多数解决方案,作为最后的手段,将其发布在 stackoverflow 上。

我在尝试安装 Pendulum 软件包时遇到的错误如下:

C:\WINDOWS\system32>pip install pendulum Collecting pendulum   Using cached pendulum-2.1.0.tar.gz (80 kB)   Installing build dependencies ... done   Getting requirements to build wheel ... done
    Preparing wheel metadata ... done Collecting pytzdata>=2018.3   Using cached pytzdata-2019.3-py2.py3-none-any.whl (489 kB) Requirement already satisfied: python-dateutil<3.0,>=2.6 in c:\python\python38-32\lib\site-packages (from pendulum) (2.8.1) Requirement already satisfied: six>=1.5 in c:\users\cuser\appdata\roaming\python\python38\site-packages (from python-dateutil<3.0,>=2.6->pendulum) (1.14.0) Building wheels for collected packages: pendulum   Building wheel for pendulum (PEP 517) ... error   ERROR: Command errored out with exit status 1: …
Run Code Online (Sandbox Code Playgroud)

python pip python-3.x

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

Perl 显然是如何避免灾难性的回溯的?

我正在使用 Perl 5.34.1 和 Python 3.10.12。

以下脚本在 Python 中需要 16 秒:

import re
patt = re.compile(r"W(X|Y+)+Z")
print(patt.search("WYYYYYYYYYYYYYYYYYYYYYYYYYYYYA"))
Run Code Online (Sandbox Code Playgroud)

但在 Perl 中几乎不需要花费任何时间:

use v5.34;
my $patt = qr/W(X|Y+)+Z/;
print("WYYYYYYYYYYYYYYYYYYYYYYYYYYYYA" =~ $patt);
Run Code Online (Sandbox Code Playgroud)

这是https://medium.com/bigpanda-engineering/catastropic-backtracking-the-dark-side-of-regular-expressions-80cab9c443f6提供的灾难性回溯示例。

我预计任何回溯正则表达式引擎都会在这种情况下受到影响,但显然 Perl 正则表达式引擎不会。在这个例子中它如何避免灾难性的回溯?它实际上是在内部“灾难性”地回溯,但比 Python 引擎快几个数量级吗?它是否使用一些快速路径优化来防止在完成完整回溯序列之前提前失败?

regex perl

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

如何将 C++ 函数周围的 R 包装器转换为 Python/Numpy

R 包Ckmeans.1d.dp依靠C++ 代码来完成其 99% 的工作。

我想在 Python 中使用这个功能而不必依赖 RPy2。因此,我想将 R 包装器“转换”为一个类似的 Python 包装器,它在 Numpy 数组上运行,就像 R 代码在 R 向量上运行一样。这可能吗?看起来应该是这样,因为 C++ 代码本身看起来(在我未经训练的眼睛看来)就像它自己站起来一样。

但是,Cython 的文档并没有真正涵盖这个用例,即用 Python 包装现有的 C++。它在此处此处被简要提及,但由于我以前从未使用过 C++,因此我无法理解。

这是我的尝试,失败并出现一系列“Cannot assign type 'double' to 'double *'错误:

目录结构

.
??? Ckmeans.1d.dp  # clone of https://github.com/cran/Ckmeans.1d.dp
??? ckmeans
?   ??? __init__.py
?   ??? _ckmeans.pyx
??? setup.py
??? src
    ??? Ckmeans.1d.dp_pymain.cpp
Run Code Online (Sandbox Code Playgroud)

src/Ckmeans.1d.dp_pymain.cpp

#include "../Ckmeans.1d.dp/src/Ckmeans.1d.dp.h"
static void Ckmeans_1d_dp(double *x, int* length, double *y, int * ylength, …
Run Code Online (Sandbox Code Playgroud)

c++ python numpy r

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

jsonschema 枚举值以另一个枚举值为条件

我有一个适用于我的应用程序的可接受输入组合表:

noises   appearance
------   ----------
squeaks  fluffy
purrs    fluffy
hisses   fluffy
peeps    feathers
chirps   feathers
squeaks  feathers
hisses   scaly
Run Code Online (Sandbox Code Playgroud)

任何其他值的组合都是不可接受的。

如何在 JSON Schema 中对其进行编码?“架构的其余部分”看起来有点像这样:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "array",
  "items": {
    "type": "object",
    "required": ["noise", "appearance"]
    "properties": {
      "noise": ...,
      "appearance": ...
    }
  }
Run Code Online (Sandbox Code Playgroud)

目前我的应用程序正在使用 Draft 4,因为它是jsonschema 包的最后一个稳定版本所支持的。

jsonschema

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

如何在不扩展轴限制的情况下绘图?

我试图在不扩展或修改其限制的情况下绘制现有轴。

例如:

import numpy as np
import matplotlib.pyplot as plt

xy = np.random.randn(100, 2)

plt.scatter(xy[:,0], xy[:,1])
Run Code Online (Sandbox Code Playgroud)

制作具有良好拟合轴限制的精细绘图。

但是,当我尝试在它上面画一条线时:

xlim = plt.gca().get_xlim()
plt.plot(xlim, xlim, 'k--')
Run Code Online (Sandbox Code Playgroud)

轴限制被扩展,大概是为了在新数据周围创建填充。

如何在没有此填充的情况下画一条线?

matplotlib

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

在 joblib 中缓存数据帧

Joblib 具有通过自动内存映射数组来跨进程共享 Numpy 数组的功能。然而,这利用了 Numpy 的特定功能。Pandas 确实在底层使用了 Numpy,但除非您的列都具有相同的数据类型,否则您无法真正将 DataFrame 序列化为单个 Numpy 数组。

缓存 DataFrame 以在 Joblib 中重用的“正确”方法是什么?

我最好的猜测是分别对每一列进行内存映射,然后在循环内重建数据帧(并祈祷 Pandas 不会复制数据)。但这似乎是一个相当密集的过程。

我知道独立的 Memory 类,但不清楚这是否有帮助。

python python-3.x pandas joblib numpy-memmap

5
推荐指数
0
解决办法
646
查看次数