小编U10*_*ard的帖子

PyQt5 - 如何向 QMessageBox 添加滚动条

我有一个基于用户输入生成的列表。

我正在尝试在 QMessageBox 中显示此列表。但是,我无法知道这个列表的长度。名单可能很长。

因此,我需要向 QMessageBox 添加滚动条。

有趣的是,我到处寻找,但我还没有找到任何解决方案。

下面是我希望是一个“最小的、完整的和可验证的示例”,当然没有用户输入;我刚刚创建了一个列表作为示例。

我很感激任何建议。

import sys
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class W(QWidget):

   def __init__(self):
      super().__init__()

      self.initUi()

   def initUi(self):
      self.btn = QPushButton('Show Message', self)
      self.btn.setGeometry(10, 10, 100, 100)
      self.btn.clicked.connect(self.buttonClicked)
      self.lst = list(range(2000))
      self.show()


   def buttonClicked(self):
      result = QMessageBox(self)
      result.setText('%s' % self.lst)
      result.exec_()

if __name__ == "__main__":
   app = QApplication(sys.argv)
   gui = W()
   sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

python pyqt qmessagebox pyqt5

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

Pandas count values greater than current row in the last n rows

How to get count of values greater than current row in the last n rows?

Imagine we have a dataframe as following:

    col_a
0    8.4
1   11.3
2    7.2
3    6.5
4    4.5
5    8.9
Run Code Online (Sandbox Code Playgroud)

I am trying to get a table such as following where n=3.

    col_a   col_b
0     8.4       0
1    11.3       0
2     7.2       2
3     6.5       3
4     4.5       3
5     8.9       0
Run Code Online (Sandbox Code Playgroud)

Thanks in advance.

python dataframe pandas

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

SQLAlchemy 批量创建如果不存在

我试图通过减少对数据库的调用来优化我的代码。我有以下型号:

class PageCategory(Base):    
    category_id = Column(Text, ForeignKey('category.category_id'), primary_key=True)
    page_id = Column(Text, ForeignKey('page.page_id'), primary_key=True)


class Category(Base):
    category_id = Column(Text, primary_key=True)
    name = Column(Text, nullable=False)
    pages = relationship('Page', secondary='page_category')


class Page(Base):
    page_id = Column(Text, primary_key=True)
    name = Column(Text, nullable=False)
    categories = relationship('Category', secondary='page_category')
Run Code Online (Sandbox Code Playgroud)

该代码接收 Facebook 点赞流,每个点赞都带有一个PageaCategory以及它们之间的明显关系 a PageCategory。我需要找到一种方法来批量创建(如果尚不存在)不同的页面、类别以及它们之间的关系。鉴于代码需要很快,我无法在创建每个对象时来回访问数据库。

page = Page(page_id='1', name='1')
category = Category(category_id='2', name='2')
session.add(page)
session.add(category)
session.commit()
...same for PageCategory
Run Code Online (Sandbox Code Playgroud)

现在,鉴于 apage_idcategory_idPK,IntegrityError如果我们尝试插入重复项,数据库将引发 a ,但这仍然是往返舞蹈。我需要一个实用程序来接收,比如一个对象列表,session.bulk_save_objects([page1, page2, category1, category2, page_category1, …

python sqlalchemy bulk

7
推荐指数
0
解决办法
412
查看次数

合并以相同字母开头的pandas DataFrame列

假设我有一个DataFrame

>>> df = pd.DataFrame({'a1':[1,2],'a2':[3,4],'b1':[5,6],'b2':[7,8],'c':[9,0]})
>>> df
   a1  a2  b1  b2  c
0   1   3   5   7  9
1   2   4   6   8  0
>>> 
Run Code Online (Sandbox Code Playgroud)

我想合并(也许不是合并,而是串连),其中他们的名字的第一个字母是相等的列,如a1a2等......但我们看到,有一个c列是本身没有任何其他类似的人,因此,我希望他们不要抛出错误,而是将NaNs 添加到他们。

我想以某种方式将其合并,从而将一个宽范围更改DataFrame为一个长范围DataFrame,基本上就像一个宽范围到长范围的修改一样。

我已经有解决问题的方法,但是唯一的问题是它的效率很低,我想要一个更高效,更快速的解决方案(与我的:P不同),我目前有一个for循环和一个try except(嗯,听起来已经很糟糕了)这样的代码如:

>>> df2 = pd.DataFrame()
>>> for i in df.columns.str[:1].unique():
    try:
        df2[i] = df[[x for x in df.columns if x[:1] == i]].values.flatten()
    except:
        l = df[[x for x in df.columns if x[:1] == …
Run Code Online (Sandbox Code Playgroud)

python merge dataframe pandas

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

更改 url 参数

如何更改 url 的参数值?没有正则表达式。

现在我试试这个,但它很长:

from urllib.parse import parse_qs, urlencode,  urlsplit
url = 'http://example.com/?page=1&text=test#section'
param, newvalue = 'page', '2'

url, sharp, frag = url.partition('#')
base, q, query = url.partition('?')
query_dict = parse_qs(query)
query_dict[param][0] = newvalue
query_new = urlencode(query_dict, doseq=True)
url_new = f'{base}{q}{query_new}{sharp}{frag}'
Run Code Online (Sandbox Code Playgroud)

另外,我通过 urlsplit 尝试过:

parsed = urlsplit(url)
query_dict = parse_qs(parsed.query)
query_dict[param][0] = newvalue
query_new = urlencode(query_dict, doseq=True)
parsed.query = query_new
url_new = urlencode(parsed)
Run Code Online (Sandbox Code Playgroud)

但就urlparsed.query = query_new它上升错误AttributeError: can't set attribute

python url urllib

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

根据组号创建新列表并添加分数

如果a在另一个列表中有一个列表,看起来像这样......

[['Harry',9,1],['Harry',17,1],['Jake',4,1], ['Dave',9,2],['Sam',17,2],['Sam',4,2]]
Run Code Online (Sandbox Code Playgroud)

我如何将中间元素添加到一起,所以对于'哈利'来说,例如,它显示为['Harry', 26]和Python也可以查看组号(第3个元素)并仅输出获胜者(分数最高的那个是中间元素).因此,对于每个群体,都需要有一个胜利者.所以最终的输出显示:

[['Harry', 26],['Sam',21]]
Run Code Online (Sandbox Code Playgroud)

这个问题不是一个重复:它还有第三个元素,我被困在其中

类似的问题给了我一个答案:

grouped_scores = {}
for name, score, group_number in players_info:
    if name not in grouped_scores:
        grouped_scores[name] = score
        grouped_scores[group_number] = group_number 
    else:
        grouped_scores[name] += score
Run Code Online (Sandbox Code Playgroud)

但是这只会增加得分,并不会从每个组中取得胜利者.请帮忙.

我曾经想过做这样的事情,但我不确定该做什么......

grouped_scores = {}
for name, score, group_number in players_info:
    if name not in grouped_scores:
        grouped_scores[name] = score
    else:
        grouped_scores[name] += score
    for group in group_number:
        if grouped_scores[group_number] = group_number:
            [don't know what to do here]
Run Code Online (Sandbox Code Playgroud)

python arrays list python-3.x

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

在数据帧上迭代re.split()

我试图使用re.split()将pandas数据框中的单个变量拆分为另外两个变量.

我的数据如下:

   xg              
0.05+0.43
0.93+0.05
0.00
0.11+0.11
0.00
3.94-2.06
Run Code Online (Sandbox Code Playgroud)

我想创造

 e      a
0.05  0.43
0.93  0.05
0.00  
0.11  0.11
0.00
3.94  2.06
Run Code Online (Sandbox Code Playgroud)

我可以使用for循环和索引来完成此操作.

for i in range(len(df)):
    if df['xg'].str.len()[i] < 5:
        df['e'][i] = df['xg'][i]
    else:
        df['e'][i], df['a'][i] = re.split("[\+ \-]", df['xg'][i])
Run Code Online (Sandbox Code Playgroud)

然而,这很慢,我不相信这是一个很好的方法,我正在努力提高我的代码/ python理解.

我尝试使用np.where编写它,或使用列表理解或应用lambda进行了各种尝试,但我不能让它运行得太多.我认为我遇到的所有问题都是因为我试图将函数应用于整个系列而不是位置值.

如果有人知道一个比我丑陋的循环更好的方法,我会非常感兴趣.

python regex loops python-3.x pandas

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

为什么不能使用`replace`方法 - pandas将整数替换为列表

所以,假设我有一个pandas数据框,如下所示:

df=pd.DataFrame({'a':[1,2,3,0]})
Run Code Online (Sandbox Code Playgroud)

所以我的目标是0[]这个数据帧中的(空列表)替换值,但我做了:

print(df.replace(0,[]))
Run Code Online (Sandbox Code Playgroud)

但它给了我一个错误:

TypeError: Invalid "to_replace" type: 'int'
Run Code Online (Sandbox Code Playgroud)

我尝试了所有可能的事情,即:

df[df==0]=[]
Run Code Online (Sandbox Code Playgroud)

等等...

但没有任何作用.

期望的输出(如果混淆):

   a
0  1
1  2
2  3
3 []
Run Code Online (Sandbox Code Playgroud)

python types replace dataframe pandas

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

如何融化熊猫数据框?

标签上,我经常看到用户询问有关在 pandas 中融合数据框的问题。我将尝试针对此主题进行规范的问答(自我回答)。

我要澄清:

  1. 什么是熔体?

  2. 我如何使用熔体?

  3. 我什么时候使用熔体?

我看到一些关于融化的热门问题,例如:

所以我将尝试针对这个主题进行规范的问答。



数据集:

我将在这个随机成绩数据集上为随机年龄的随机人提供我所有的答案(更容易解释答案:D):

import pandas as pd
df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'], 
                   'Math': ['A+', 'B', 'A', 'F', 'D', 'C'], 
                   'English': ['C', 'B', 'B', 'A+', 'F', 'A'],
                   'Age': [13, 16, 16, 15, 15, 13]})


>>> df
   Name Math English  Age
0   Bob   A+       C   13
1  John …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas pandas-melt

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

将向量中的所有其他元音设为大写

给定一个小写字符串。前任:

s <- 'abcdefghijklmnopqrstuvwxyz'
Run Code Online (Sandbox Code Playgroud)

目标是使字符串中的所有其他元音都大写。

此处所需的输出:

abcdEfghijklmnOpqrstuvwxyz
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,因为所有元音都是按顺序使用的,e并且o都是大写的。

在所有情况下,字符串中都只有小写字符。

对于aieou,所需的输出是:

aIeOu
Run Code Online (Sandbox Code Playgroud)

我怎样才能在 R 中做到这一点?

我试过:

s[unlist(strsplit(s, '')) %in% c('a', 'e', 'i', 'o', 'u')] <- toupper(s[unlist(strsplit(s, '')) %in% c('a', 'e', 'i', 'o', 'u')])
Run Code Online (Sandbox Code Playgroud)

但无济于事。

即使这有效,也不会是所有其他元音

R 版本 4.1.1。

string r uppercase

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