小编New*_*ler的帖子

如何检查pandas DataFrame中的特定单元格是否为空?

df在熊猫中有以下内容.

0       A     B     C
1       2   NaN     8
Run Code Online (Sandbox Code Playgroud)

我如何检查是否df.iloc[1]['B']是NaN?

我尝试使用df.isnan(),我得到一个这样的表:

0       A     B      C
1   false  true  false
Run Code Online (Sandbox Code Playgroud)

但我不知道如何索引表格,以及这是否是一种有效的工作方式?

python dataframe pandas

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

我们可以在 Airflow 中为每个任务设置 priority_weight 吗?

我知道,priority_weight可以为被设置DAGdefault_args官方文件中按例子在这里

我们还可priority_weight以为 中的每个任务设置不同的DAG吗?

继本教程的例子,那岂不是t1会从具有不同的优先级t2

airflow

7
推荐指数
1
解决办法
6257
查看次数

使用 Chromedriver 制作程序,出现错误:“无法使用此命令获取 Chrome 版本”

这是我的代码。我这样做是因为当我尝试放置 chromedriver.exe 的路径时,我要么得到“WebDriverException:消息:'chromedriver.exe'可执行文件可能有错误的权限”或“WebDriverException:消息:'chromedriver'可执行文件需要在 PATH 中”,我不知道如何解决它。

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager


browser = webdriver.Chrome(ChromeDriverManager().install())
Run Code Online (Sandbox Code Playgroud)

运行此代码会出现以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-43-614c8d8b619c> in <module>
      5 
      6 
----> 7 browser = webdriver.Chrome(ChromeDriverManager().install())
      8 

/srv/conda/envs/notebook/lib/python3.7/site-packages/webdriver_manager/chrome.py in install(self, path)
     17     def install(self, path=None):
     18         # type: () -> str
---> 19         bin_file = self._file_manager.download_driver(self.driver, path)
     20         os.chmod(bin_file.path, 0o755)
     21         return bin_file.path

/srv/conda/envs/notebook/lib/python3.7/site-packages/webdriver_manager/cache.py in download_driver(self, driver, path, subpath)
     70         if path is not None:
     71             path = os.path.abspath(path)
---> 72         cached_binary …
Run Code Online (Sandbox Code Playgroud)

python selenium-webdriver

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

如何在 docker 镜像上执行完美的 Flow?

我的目标:

我有一个构建的 docker 映像,并希望在该映像上运行我的所有流程。

现在:

我有以下任务正在本地 Dask 执行器上运行。运行代理的服务器与执行所需的环境是不同的 python 环境my_task- 因此需要在预构建映像中运行。

我的问题是: 如何在 Dask Executor 上运行此流程,以便它在我提供的 docker 映像(作为环境)上运行?

import prefect
from prefect import task, Flow
from prefect.engine.executors import LocalDaskExecutor
from prefect.environments import LocalEnvironment


@task
def hello_task():
    logger = prefect.context.get("logger")
    logger.info("Hello, Docker!")


with Flow("My Flow") as flow:
    results = hello_task()

flow.environment = LocalEnvironment(
    labels=[], executor=LocalDaskExecutor(scheduler="threads", num_workers=2),
)
Run Code Online (Sandbox Code Playgroud)

我认为我需要首先在该 docker 映像上启动服务器和代理(如此处所述,但我想可以有一种方法可以简单地在提供的映像上运行 Flow。

更新1

按照教程,我尝试了以下操作:

import prefect
from prefect import task, Flow
from prefect.engine.executors import LocalDaskExecutor
from …
Run Code Online (Sandbox Code Playgroud)

etl docker dask docker-image prefect

7
推荐指数
1
解决办法
7165
查看次数

熊猫random_state到底做什么?

我在使用Pandas random_state的地方有以下代码

randomState = 123
sampleSize = 750
df = pd.read_csv(filePath, delim_whitespace=True)
df_s = df.sample(n=sampleSize, random_state=randomState)
Run Code Online (Sandbox Code Playgroud)

这将生成一个示例数据框df_s。每次我使用相同的代码运行时randomState,都会得到相同的示例df_s。当我从改变值123,以12样品的变化一样,所以我想这是什么random_state呢。

我的愚蠢问题:数量变化如何影响样本变化?我阅读了Pandas文档Numpy文档,但看不清图片。

任何带有示例的简单解释将不胜感激。

python random numpy pandas

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

如何查看Python假设库的输出

使用假设库并执行单元测试时,如何查看该库在我的代码上尝试的实例?

from hypothesis import given
import hypothesis.strategies as st

@given(st.integers())
def silly_example(some_number):
    assert some_number > 0
Run Code Online (Sandbox Code Playgroud)

问题是:如何打印/查看some_number库生成的变量?

python python-hypothesis

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

如何在不转换为 pd.DataFrame 的情况下使用 np.nan 值计算矩阵上的 np.cov?

我有以下几点np.array

my_matrix = np.array([[1,np.nan,3], [np.nan,1,2], [np.nan,1,2]])
Run Code Online (Sandbox Code Playgroud)
my_matrix = np.array([[1,np.nan,3], [np.nan,1,2], [np.nan,1,2]])
Run Code Online (Sandbox Code Playgroud)

如果我对其进行评估np.cov,我会得到:

np.cov(my_matrix)
Run Code Online (Sandbox Code Playgroud)
array([[ 1., nan,  3.],
       [nan,  1.,  2.],
       [nan,  1.,  2.]])
Run Code Online (Sandbox Code Playgroud)

但是如果我用它来计算它,pd.DataFrame.cov我会得到不同的结果:

pd.DataFrame(my_matrix).cov()
Run Code Online (Sandbox Code Playgroud)
np.cov(my_matrix)
Run Code Online (Sandbox Code Playgroud)

我知道根据pandas文档,他们处理nan值。

我的问题是,我怎样才能得到相同(或相似的结果)numpy?或者在计算协方差时如何处理丢失的数据numpy

python numpy covariance python-3.x pandas

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

将3d numpy数组转换为2d numpy数组(其中内容为元组)

我有以下3d numpy数组np.random.rand(6602, 3176, 2)。我想将其转换为2d数组(numpypandas.DataFrame),其中内部的每个值都是一个元组,使得形状为(6602, 3176)

这个问题帮助我了解了如何减小尺寸,但是我仍然对元组位感到困惑。

python numpy

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

如何对具有偏移量的向量应用操作

考虑以下 pd.DataFrame

import numpy as np
import pandas as pd

start_end = pd.DataFrame([[(0, 3), (4, 5), (6, 12)], [(7, 10), (11, 90), (91, 99)]])
values = np.random.rand(1, 99)
Run Code Online (Sandbox Code Playgroud)

start_end是一个pd.DataFrame形状(X, Y),其中每个值是内部的元组(start_location, end_location)中的values矢量。另一种说法是特定单元格中的值是不同长度的向量。

如果我想找到 中每个单元格的向量值的平均值(例如),pd.DataFrame我该如何以一种具有成本效益的方式做到这一点?

我设法用一个.apply函数实现了这一点,但速度很慢。

我想我需要找到某种方法将它呈现在numpy数组中,然后将其映射回 2d 数据框,但我不知道如何。

笔记

  • 起点和终点之间的距离可能会有所不同,并且可能存在异常值。
  • 单元格开始/结束始终与其他单元格不重叠(看看这个先决条件是否会影响求解速度会很有趣)。

泛化问题

更一般地说,我这是一个反复出现的问题,即如何制作 3d 数组,其中一个维度的长度与通过某些转换函数(平均值、最小值等)与 2d 矩阵的长度不相等。

numpy offset pandas

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

如何在pandas中有效地加入/合并/连接大数据框?

目的是创建一个大数据框架,我可以在其上执行操作,例如平均每列的行等.

问题是随着数据帧的增加,每次迭代的速度也会增加,所以我无法完成计算.

注意:df只有两列,这col1是不必要的,所以我加入它.col1是一个字符串,col2是一个浮点数.行数是3k.以下是一个例子:

folder_paths    float
folder/Path     1.12630137
folder/Path2    1.067517426
folder/Path3    1.06443264
folder/Path4    1.049119625
folder/Path5    1.039635769
Run Code Online (Sandbox Code Playgroud)

问题关于如何提高代码效率以及瓶颈在哪里的任何想法?此外,我不确定是否merge可行.

当前的想法我正在考虑的一个解决方案是分配内存并指定列类型:col1是一个字符串,col2是一个浮点数.

df = pd.DataFrame() # create an empty data frame

for i in range(1000):
    if i is 0:
        df = generate_new_df(arg1, arg2)
    else:
        df = pd.merge(df, generate_new_df(arg1, arg2), on='col1', how='outer')
Run Code Online (Sandbox Code Playgroud)

我也尝试过使用pd.concat,但结果非常相似:每次迭代后的时间增加

df = pd.concat([df, get_os_is_from_folder(pnlList, sampleSize, randomState)], axis=1)
Run Code Online (Sandbox Code Playgroud)

pd.concat的结果

run 1
time 0.34s …
Run Code Online (Sandbox Code Playgroud)

python pandas

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