小编Nic*_*ick的帖子

通过外连接将 pandas 数据框与列表合并

我有一个如下所示的数据框

   A  B
0  1  4
1  2  5
2  3  6
Run Code Online (Sandbox Code Playgroud)

和一个清单

names = ['x','y']
Run Code Online (Sandbox Code Playgroud)

我想获得一个能够执行该列表并进行外部连接的数据框。期望的结果是:

   A  B  name
0  1  4  x
1  1  4  y
2  2  5  x
3  2  5  y
4  3  6  x
5  3  6  y
Run Code Online (Sandbox Code Playgroud)

python list pandas

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

numba jit:'DataFlowAnalysis'对象没有属性'op_STORE_DEREF'

我正在尝试使用numba运行以下代码但是收到错误:

from numba import jit

@jit(nopython=True)
def create_card_deck():
    values = "23456789TJQKA"
    suites = "CDHS"
    Deck = []
    [Deck.append(x + y) for x in values for y in suites]
    return Deck

create_card_deck()
Run Code Online (Sandbox Code Playgroud)

任何导致此错误的建议都表示赞赏:

'DataFlowAnalysis' object has no attribute 'op_STORE_DEREF'
Run Code Online (Sandbox Code Playgroud)

python jit numba

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

尝试在标签中显示图像时 setPixmap 崩溃

我用 pyqt 设计器创建了一个最小的示例,当按下按钮时,它会更改标签的文本,并且应该通过标签在窗口中显示屏幕截图。

不幸的是,该示例在尝试在标签中显示屏幕截图时崩溃了。

from PIL.ImageQt import ImageQt
from PyQt5 import QtCore, QtGui, QtWidgets
from pyscreenshot import grab

class Ui_Form(object):
    def setupUi(self, Form):
        Form.setObjectName("Form")
        Form.resize(503, 382)
        self.pushButton = QtWidgets.QPushButton(Form)
        self.pushButton.setGeometry(QtCore.QRect(70, 30, 75, 23))
        self.pushButton.setObjectName("pushButton")
        self.label = QtWidgets.QLabel(Form)
        self.label.setGeometry(QtCore.QRect(80, 100, 47, 14))
        self.label.setObjectName("label")

        self.retranslateUi(Form)
        self.pushButton.clicked.connect(lambda: self.take_screenshot())
        QtCore.QMetaObject.connectSlotsByName(Form)

    def take_screenshot(self):
        self.label.setText("1?")
        screenshot = grab()
        self.label.setText("2")
        qim = ImageQt(screenshot)
        pix = QtGui.QPixmap.fromImage(qim)
        self.label.setText("3")
        self.label.setPixmap(pix)



    def retranslateUi(self, Form):
        _translate = QtCore.QCoreApplication.translate
        Form.setWindowTitle(_translate("Form", "Form"))
        self.pushButton.setText(_translate("Form", "PushButton"))
        self.label.setText(_translate("Form", "TextLabel"))


if __name__ == "__main__":
    import sys
    app …
Run Code Online (Sandbox Code Playgroud)

python screenshot pyqt qpixmap pyqt5

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

线程队列工作示例

如何在以下代码中将打开的线程的最大值限制为20?我知道过去曾提出过一些类似的问题,但我特别想知道如何使用队列以及如果可能的工作示例做得最好.

    # b is a list with 10000 items
    threads = [threading.Thread(target=targetFunction, args=(ptf,anotherarg)) for ptf in b]
    for thread in threads:
        thread.start()

    for thread in threads:
        thread.join()
Run Code Online (Sandbox Code Playgroud)

python multithreading

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

在 python 中手动退出线程是一个好习惯吗?

手动退出线程是个好习惯吗?下面的代码注释了 #sys.exit() 因为我假设线程在那里结束。但无论如何结束它是个好习惯吗?如果不是,如果该线程被调用数百次而没有使用 sys.exit() 手动退出,是否会产生任何开销?

import time
import threading
import sys

def non_daemon():
    print('Test non-daemon')
    time.sleep(5)
    #sys.exit() # is this necessary/encouraged?

t = threading.Thread(name='non-daemon', target=non_daemon)
t.start()

print("done")
Run Code Online (Sandbox Code Playgroud)

python multithreading

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

使用来自多个模块的python日志记录并写入文件和RotatingFileHandler

我正在使用以下模块记录模块中的事件.我称之为:

模块1

from tools.debug_logger import debug_logger
self.logger = debug_logger().start_logger('module1')
self.logger.debug("Top left corner found")
Run Code Online (Sandbox Code Playgroud)

模块2:

from tools.debug_logger import debug_logger
self.logger = debug_logger().start_logger('module2')
self.logger.debug("Top left corner found")
Run Code Online (Sandbox Code Playgroud)

这里是文件/tools/debug_logger.py

import logging, logging.handlers
import sys
class debug_logger(object):
    def start_logger(self,name):
        logger = logging.getLogger(name)
        logger.setLevel(logging.DEBUG)
        if not len(logger.handlers):
            fh = logging.handlers.RotatingFileHandler('log/pokerprogram.log', maxBytes=1000000, backupCount=10)
            fh.setLevel(logging.DEBUG)
            fh2 = logging.handlers.RotatingFileHandler('log/pokerprogram_info_only.log', maxBytes=1000000, backupCount=5)
            fh2.setLevel(logging.INFO)
            er = logging.handlers.RotatingFileHandler('log/errors.log', maxBytes=2000000, backupCount=2)
            er.setLevel(logging.WARNING)
            ch = logging.StreamHandler(sys.stdout)
            ch.setLevel(1)
            fh.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
            fh2.setFormatter(logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s'))
            er.setFormatter(logging.Formatter('%(asctime)s - …
Run Code Online (Sandbox Code Playgroud)

python logging

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

将pandas数据帧保存在kdb/q中

在kdb中保存pandas数据帧的最佳方法是什么?有没有可以让它更容易的库?

下面的代码显然可以用来从kdb中获取一些东西,但是如何将数据框保存到它中呢?

from qpython import qconnection

with qconnection.QConnection(host = 'localhost', port = 5001, pandas = True) as q:
    ds = q('(1i;0Ni;3i)', pandas = True)
    print(ds)
Run Code Online (Sandbox Code Playgroud)

kdb pandas

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

网站抓取:python请求不下载完整网站?

我在抓取网站时遇到了问题.目的是在某些日子里为伦敦的酒店取得价格.为此,我从booking.com加载以下网址,然后尝试搜索关键字.但由于某种原因,requests.get不会下载完整的网站.例如,下面的URL显示了浏览器中的酒店列表.每个都显示'总计'和价格.但是,在下面的代码中,site.find('Total')表示在字符串中找不到单词'Total',即使它在浏览器中可见.任何有关为什么会发生这种情

import requests

url='http://www.booking.com/searchresults.en-gb.html?label=gen173nr-17CAEoggJCAlhYSDNiBW5vcmVmaFCIAQGYAS64AQTIAQTYAQHoAQH4AQs;sid=1a43e0952558ac0ad0061d5b6523a7bc;dcid=1;checkin_monthday=4;checkin_year_month=2016-2;checkout_monthday=11;checkout_year_month=2016-2;city=-2601889;class_interval=1;csflt=%7B%7D;group_adults=7;group_children=0;highlighted_hotels=1192837;hp_sbox=1;label_click=undef;no_rooms=1;review_score_group=empty;room1=A%2CA%2CA%2CA%2CA%2CA%2CA;sb_price_type=total;score_min=0;si=ai%2Cco%2Cci%2Cre%2Cdi;ss=London;ssafas=1;ssb=empty;ssne=London;ssne_untouched=London&;order=price_for_two'
r=requests.get(url)

site=r.text
site.find('Total')
Run Code Online (Sandbox Code Playgroud)

python web-scraping python-requests

0
推荐指数
1
解决办法
1119
查看次数

<% %> 在 C++ 中做什么?

我正在使用 cppimport,这是一个帮助将 cpp 导入 python 的库。如此处所述:https : //github.com/tbenthompson/cppimport,必须将 setup_pybind11 放入/* */cpp 文件中。

/*
<%
setup_pybind11(cfg)
%>
*/
Run Code Online (Sandbox Code Playgroud)

看来,当我/* */按照文档中的描述将其放入时,从 python 导入 cpp 文件时它没有任何影响。但是,当我不使用/* */. 有什么建议我可以做什么?为什么我必须/* */从 python 中删除它才能正常工作?

c++ pybind11

0
推荐指数
1
解决办法
133
查看次数