小编sla*_*law的帖子

在Pandas DataFrame的每一行中查找第一个非零值

我有一个Pandas DataFrame:

import pandas as pd

df = pd.DataFrame([[0.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0],
                   [1.0, 0.0, 1.0, 3.0, 1.0, 1.0, 7.0, 0.0],
                   [0.0, 0.0, 13.0, 14.0, 15.0, 16.0, 17.0, 18.0]
                  ]
                  , columns=['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'])

     A    B     C     D     E     F     G     H
0  0.0  2.0   3.0   4.0   5.0   6.0   7.0   8.0
1  1.0  0.0   1.0   3.0   1.0   1.0   7.0   0.0
2  0.0  0.0  13.0  14.0  15.0  16.0  17.0  18.0
Run Code Online (Sandbox Code Playgroud)

我想返回每行中第一个非零值的序列(不是列表).这当前有效,但 …

python pandas

10
推荐指数
3
解决办法
6254
查看次数

C++ tellg()返回类型

我有一个大的二进制文件,我正在阅读,我想比较当前位置与unsigned long long int.但是,基于C++文档,我不清楚是否:

  1. 什么是tellg()的返回类型
  2. 如何将tellg()与unsigned long long int进行比较?
  3. 是否有可能tellg()的返回类型具有小于unsigned long long int的最大值(来自numeric_limits)?

任何答案或建议将不胜感激.

c++

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

Windows上的Python多处理RuntimeError

我有一个类函数(让我们称之为"alpha.py"),它使用多处理(processes = 2)来分叉一个进程,并且是我编写的Python包的一部分.在一个单独的Python脚本中(我们称之为"beta.py"),我从这个类中实例化了一个对象并调用了使用多处理的相应函数.最后,所有这些都包含在一个包装Python脚本(让我们称之为"gamma.py")中,它处理许多不同的类对象和函数.

实质上:

  1. 从命令行运行./gamma.py
  2. gamma.py使用子进程并执行beta.py.
  3. beta.py从alpha.py类中实例化一个对象并调用使用多处理的函数(processes = 2)

这在Mac或Linux上运行没有问题.但是,它在Windows机器上成为一个问题,错误(和文档)表明我应该在某处写这个:

if __name__ == '__main__':
    freeze_support()
Run Code Online (Sandbox Code Playgroud)

这篇文章还提到做同样的事情.

但是,我不确切知道这两行应该驻留在哪里.目前,alpha.py,beta.py或gamma.py都不包含if __name__ == '__main__':节.如果有人能告诉我这两条线应该去哪里以及背后的理由,那将是很棒的.

python python-2.7 python-multiprocessing

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

Python将生成器分成两部分

我可以访问一个产生两个值的生成器:

def get_document_values():
    docs = query_database()  # returns a cursor to database documents
    for doc in docs:
        # doc is a dictionary with ,say, {'x': 1, 'y': 99}
        yield doc['x'], doc['y']
Run Code Online (Sandbox Code Playgroud)

我有另一个函数,process_x我无法更改,可以将生成器作为输入来处理x所有文档(如果生成元组,那么它只处理元组的第一个元素并忽略其他元素):

X = process_x(get_document_values())  # This processes x but ignores y
Run Code Online (Sandbox Code Playgroud)

但是,我还需要存储y生成器中的所有值.我唯一的解决方案是执行get_document_values两次:

Y = [y for x,y in get_document_values()]  #Throw away x
X = process_x(get_document_values())      #Throw away y
Run Code Online (Sandbox Code Playgroud)

这在技术上有效,但是当有许多文档要处理时,新文档可能会插入到数据库中,并且长度XY将会不同.需要在X和之间进行一对一的映射,Y并且我只需要调用get_document_values一次而不是两次.

我考虑过这样的事情:

Y …
Run Code Online (Sandbox Code Playgroud)

python generator python-3.x

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

Pandas read_excel with Hyperlink

我有一个Excel电子表格,我正在阅读Pandas DataFrame:

df = pd.read_excel("file.xls")
Run Code Online (Sandbox Code Playgroud)

但是,电子表格的其中一列包含具有与之关联的超链接的文本.如何访问Pandas中的底层超链接?

excel pandas

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

使用BeautifulSoup CSS Selector获取文本

示例HTML

<h2 id="name">
    ABC
    <span class="numbers">123</span>
    <span class="lower">abc</span>
</h2>
Run Code Online (Sandbox Code Playgroud)

我可以用以下内容获得数字:

soup.select('#name > span.numbers')[0].text
Run Code Online (Sandbox Code Playgroud)

如何ABC使用BeautifulSoup和select函数获取文本?

在这种情况下怎么样?

<div id="name">
    <div id="numbers">123</div> 
    ABC
</div>
Run Code Online (Sandbox Code Playgroud)

python beautifulsoup css-selectors html-parsing python-2.7

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

Numpy 数组集差异

我有两个具有重叠行的 numpy 数组:

import numpy as np

a = np.array([[1,2], [1,5], [3,4], [3,5], [4,1], [4,6]])
b = np.array([[1,5], [3,4], [4,6]])
Run Code Online (Sandbox Code Playgroud)

你可以假设:

  1. 行已排序
  2. 每个数组中的行是唯一的
  3. 数组b始终是数组的子集a

我想得到一个数组,其中包含所有a不在b.

IE,:

[[1 2]
 [3 5]
 [4 1]]
Run Code Online (Sandbox Code Playgroud)

考虑到a并且b可能非常非常大,解决这个问题的最有效方法是什么?

python arrays numpy

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

将 Python 字节转换为字符串而不进行编码

我正在使用 Python 3.6 并且我有一个字节图像:

img = b'\xff\xd8\xff\xe0\x00\x10JFIF\x00'
Run Code Online (Sandbox Code Playgroud)

我需要将字节转换为字符串而不进行编码,因此它看起来像:

raw_img = '\xff\xd8\xff\xe0\x00\x10JFIF\x00'
Run Code Online (Sandbox Code Playgroud)

目标是将其合并到 html 图像标签中:

<img src="'data:image/png;base64," + base64.b64encode(raw_img) + "' />"
Run Code Online (Sandbox Code Playgroud)

python python-3.x

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

使用 2 位 Dtype 指定 NumPy 数组

根据文档,可以指定不同的数组数据类型:

dt = np.dtype('u1')   # 8-bit unsigned integer
dt = np.dtype('i4')   # 32-bit signed integer
dt = np.dtype('f8')   # 64-bit floating-point number
dt = np.dtype('c16')  # 128-bit complex floating-point number
dt = np.dtype('a25')  # 25-length zero-terminated bytes
dt = np.dtype('U25')  # 25-character string
Run Code Online (Sandbox Code Playgroud)

但是,最小的无符号整数 dtype 是 8 位。有没有办法创建一个 2 位无符号整数 dtype?

python numpy numpy-dtype

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

Python AsyncIO 中异步生成器的收益

我有一个简单的类,它利用异步生成器来检索 URL 列表:

import aiohttp
import asyncio
import logging
import sys

LOOP = asyncio.get_event_loop()
N_SEMAPHORE = 3

FORMAT = '[%(asctime)s] - %(message)s'
logging.basicConfig(stream=sys.stdout, level=logging.INFO, format=FORMAT)
logger = logging.getLogger(__name__)

class ASYNC_GENERATOR(object):
    def __init__(self, n_semaphore=N_SEMAPHORE, loop=LOOP):
        self.loop = loop
        self.semaphore = asyncio.Semaphore(n_semaphore)
        self.session = aiohttp.ClientSession(loop=self.loop)

    async def _get_url(self, url):
        """
        Sends an http GET request to an API endpoint
        """

        async with self.semaphore:
            async with self.session.get(url) as response:
                logger.info(f'Request URL: {url} [{response.status}]')
                read_response = await response.read()

                return {
                    'read': read_response,
                    'status': response.status, …
Run Code Online (Sandbox Code Playgroud)

python python-3.x python-asyncio aiohttp

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