小编avl*_*oss的帖子

Spark Dataframe中`float`与`np.nan`的比较

这是预期的行为吗?我本来想提出Spark的问题,但这似乎是一种基本功能,很难想象这里有bug。我想念什么?

蟒蛇

import numpy as np

>>> np.nan < 0.0
False

>>> np.nan > 0.0
False
Run Code Online (Sandbox Code Playgroud)

PySpark

from pyspark.sql.functions import col

df = spark.createDataFrame([(np.nan, 0.0),(0.0, np.nan)])
df.show()
#+---+---+
#| _1| _2|
#+---+---+
#|NaN|0.0|
#|0.0|NaN|
#+---+---+

df.printSchema()
#root
# |-- _1: double (nullable = true)
# |-- _2: double (nullable = true)

df.select(col("_1")> col("_2")).show()
#+---------+
#|(_1 > _2)|
#+---------+
#|     true|
#|    false|
#+---------+
Run Code Online (Sandbox Code Playgroud)

python numpy nan apache-spark pyspark

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

熊猫 `transform(set)` 引发异常

我正在尝试通过 进行转换set,但遇到了例外。Transform 可以很好地与“sum”和许多其他聚合函数一起使用,但不能与setor一起使用list

>>> import pandas as pd
>>> df = pd.DataFrame({"a":[1,2,1,], "b":[1,1,2]})
>>> df
   a  b
0  1  1
1  2  1
2  1  2
>>> df.groupby("a").b.transform(set)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/avloss/conda/lib/python3.7/site-packages/pandas/core/groupby/generic.py", line 1032, in transform
    s = klass(res, indexer)
  File "/Users/avloss/conda/lib/python3.7/site-packages/pandas/core/series.py", line 282, in __init__
    "{0!r} type is unordered" "".format(data.__class__.__name__)
TypeError: 'set' type is unordered
Run Code Online (Sandbox Code Playgroud)

我所期待的是:

   a      b   
0  1  {1, 2}
1  2 …
Run Code Online (Sandbox Code Playgroud)

python transform set dataframe pandas

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

使用不稳定“API”的 Python 技巧

我的应用程序正在使用第三方API. 它API定期在多个端点进行轮询。APIIn 还根据用户与应用程序的交互进行一些额外的调用。速度API非常慢,大多数请求需要一秒多一点的时间。这API是非常不稳定的 - 超时很常见,500错误很常见,会话密钥经常随机过期(即使定期调用定义的“keep_alive”端点)。没有选择使用另一个API.

处理这种情况的最佳做法是什么API

如何API在该requests级别禁用对此的并发请求。那么,如果一个请求正在等待响应,那么第二个请求不会启动吗?这应该在“每个域”的基础上完成,对其他域的其他请求仍然应该同时完成。

还有其他可以切换的设置,requests以便更轻松地处理此类问题API吗?

python api concurrency python-requests

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

Docker`CMD abc` VS`CMD ["a","b","c"]`

当指定命令时,CMD a b c一切都按预期工作,同时用CMD ["a", "b", "c"]- 指定相同的命令- 它会产生意外的结果.我正试图在docker中运行Jupyter(ipython).我的CMD命令是启动它.似乎无论我指定它的方式 - Jupyter开始.但是,只有当我指定它为CMD a b cjupyter实际上正常工作并且可以启动内核.在这种情况下,"New Notebook"命令有效

    FROM debian:stable
    RUN apt-get update && apt-get install -y wget bzip2
    RUN wget https://repo.continuum.io/miniconda/Miniconda2-latest-Linux-x86_64.sh && \
        bash Miniconda2-latest-Linux-x86_64.sh -b -p /anaconda2
    RUN /anaconda2/bin/conda install jupyter

    #CMD ["/anaconda2/bin/jupyter", "notebook", "--port=8888", "--no-browser", "--ip=0.0.0.0", "--NotebookApp.token=''"]
    CMD /anaconda2/bin/jupyter notebook --port=8888 --no-browser --ip=0.0.0.0 --NotebookApp.token=''

    # docker build -t IMAGE_NAME .
    # docker run --rm -it -p 8888:8888 IMAGE_NAME
Run Code Online (Sandbox Code Playgroud)

在这种情况下,"新笔记本"命令不起作用

    FROM debian:stable
    RUN …
Run Code Online (Sandbox Code Playgroud)

ipython docker jupyter

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