Series.apply()使用输入对应(可以是字典,系列或函数)映射系列的值
调用Series的值的函数.可以是ufunc(适用于整个系列的NumPy函数)或仅适用于单个值的Python函数
apply()似乎它确实做了大部分事情map(),在应用矢量化操作时矢量化标量函数.同时map()允许对空值处理进行一定程度的控制.除了Python apply()和map()函数的历史类比之外,是否有理由在一般情况下更喜欢使用其中一个?为什么这些功能不能合并?
是否可以检测Python是否运行在Conda环境中?
我更喜欢不依赖于在子进程中运行 shell 命令的解决方案,但如果这是唯一的选择,那就这样吧。我假设有一些简单的东西,比如在环境中设置的环境变量,但这种东西很难搜索(而且 Conda 文档不是很好)。
我曾经用密码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) 这可能是一个愚蠢的新手错误,但我在运行我认为是基本 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)
我究竟做错了什么?
请帮忙。尝试了我可以在网上找到的大多数解决方案,作为最后的手段,将其发布在 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) 我正在使用 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)
我预计任何回溯正则表达式引擎都会在这种情况下受到影响,但显然 Perl 正则表达式引擎不会。在这个例子中它如何避免灾难性的回溯?它实际上是在内部“灾难性”地回溯,但比 Python 引擎快几个数量级吗?它是否使用一些快速路径优化来防止在完成完整回溯序列之前提前失败?
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)
#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) 我有一个适用于我的应用程序的可接受输入组合表:
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 包的最后一个稳定版本所支持的。
我试图在不扩展或修改其限制的情况下绘制现有轴。
例如:
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)
轴限制被扩展,大概是为了在新数据周围创建填充。
如何在没有此填充的情况下画一条线?
Joblib 具有通过自动内存映射数组来跨进程共享 Numpy 数组的功能。然而,这利用了 Numpy 的特定功能。Pandas 确实在底层使用了 Numpy,但除非您的列都具有相同的数据类型,否则您无法真正将 DataFrame 序列化为单个 Numpy 数组。
缓存 DataFrame 以在 Joblib 中重用的“正确”方法是什么?
我最好的猜测是分别对每一列进行内存映射,然后在循环内重建数据帧(并祈祷 Pandas 不会复制数据)。但这似乎是一个相当密集的过程。
我知道独立的 Memory 类,但不清楚这是否有帮助。
python ×6
python-3.x ×3
numpy ×2
apache-spark ×1
c++ ×1
conda ×1
joblib ×1
jsonschema ×1
matplotlib ×1
mysql ×1
numpy-memmap ×1
pandas ×1
perl ×1
pip ×1
r ×1
regex ×1
scala ×1