小编Sha*_*erz的帖子

如何将pandas DataFrame表保存为png

我构建了一个结果的熊猫数据框.此数据框充当表.有MultiIndexed列,每行代表一个名称,即index=['name1','name2',...]创建DataFrame时.我想显示这个表并将其保存为png(或任何图形格式).目前,我能得到的最接近的是将其转换为html,但我想要一个png.看起来有类似的问题,如如何将Pandas数据帧/系列数据保存为数字?

但是,标记的解决方案将数据帧转换为线图(而不是表格),而另一个解决方案依赖于PySide,我只想因为无法将其安装在Linux上而远离它.我希望这段代码易于移植.我真的希望使用python可以轻松创建表格.所有帮助表示赞赏.

python pandas

42
推荐指数
8
解决办法
6万
查看次数

终止使用子进程打开的 gnome 终端

使用 subprocess 和命令 ' gnome-terminal -e bash' 我可以根据需要打开一个 gnome 终端(并让它保留在周围)。这是通过以下任一方式完成的

p=subprocess.Popen(['gnome-terminal', '-e', 'bash'])
Run Code Online (Sandbox Code Playgroud)

或者

p=subprocess.Popen(['gnome-terminal -e bash'], shell=True)
Run Code Online (Sandbox Code Playgroud)

p.terminate()但我无法使用或关闭终端p.kill()。据我了解,这在使用时有点棘手shell=True,但我没想到会遇到问题。

python terminal subprocess

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

Pandas - 过滤器和正则表达式搜索 DataFrame 的索引

我有一个 DataFrame,其中的列是 MultiIndex,索引是名称列表,即index=['Andrew', 'Bob', 'Calvin',...].

我想创建一个函数来返回使用名称“Bob”或以字母“A”开头或以小写字母开头的数据帧的所有行。如何才能做到这一点?

我查看df.filter()了 regex 参数,但它失败了,我得到:

df.filter(regex='a')
TypeError: expected string or buffer
Run Code Online (Sandbox Code Playgroud)

或者:

df.filter(regex=('a',1)
TypeError: first argument must be string or compiled pattern
Run Code Online (Sandbox Code Playgroud)

我尝试过其他事情,例如通过re.compile('a')无济于事。

python regex pandas

5
推荐指数
2
解决办法
8137
查看次数

用于生产和开发的 Dockerfile 设置?

我想知道人们如何将 docker 用于生产和开发。在开发中,我想挂载我的源/构建文件,以便能够快速轻松地进行更改。对于生产,我想在图像中包含源/构建文件。

这通常是如何完成的,是否有最佳或更常见的做法?

在我看来,理想情况下,我会有一个 Dockerfile 使用标志或环境变量之类的东西来设置 prod 或 dev 映像,但我找不到任何这样做的人的例子,我不确定它到底是如何完成的.

我还看到了一些具有用于生产和开发的独特 Dockerfiles 的项目的粗略示例,但是存在维护单独 Dockerfiles 的问题,如果我们不小心,随着时间的推移可能会出现分歧。

这些都是明智的还是我可能误解了什么?我对 docker 比较陌生。使用类似设置的示例 Dockerfile 或项目会很棒。我担心在一开始就用不好的做法对我们的一些服务进行 dockerizing。

编辑:如果影响任何响应,我当前所有的应用程序都是基于 python 的。

docker dockerfile

5
推荐指数
2
解决办法
4168
查看次数

python - 如何将退格符应用于字符串

我有一个字符串

s = '--two \x08--three'
Run Code Online (Sandbox Code Playgroud)

当我打印时,我得到

--two--three
Run Code Online (Sandbox Code Playgroud)

但我可以做点什么吗

s='--two--three'
Run Code Online (Sandbox Code Playgroud)

没有明确声明它。

我不需要存储甚至不知道后面的空间。我只想在没有退格字符的情况下操作文本。我怎样才能做到这一点?

编辑:希望我能澄清一点。说我有两个字符串

test1 = 'a\bb' #b
test2 = 'b' #b
Run Code Online (Sandbox Code Playgroud)

当它们被打印出来时,它们等同于用户,但是test1!=test2. 我正在做的是从终端拉出一些输出。此输出始终具有退格键。我希望能够操作最终结果、搜索单词、编辑字符串而不必担心退格。

编辑 2:我想我真正想要的是将变量设置为打印语句的结果

a = print("5\bA") #a='A' #does not work like this
Run Code Online (Sandbox Code Playgroud)

python string

4
推荐指数
2
解决办法
4647
查看次数

TreeCtrl 右键单击​​时的 wxPython 弹出菜单

我想要一个树控件,可以右键单击以创建弹出菜单。单击项目菜单时,会发送一个事件,其中包含树中的 ItemData。我不知道该怎么做。到目前为止我所拥有的只是一个简单的弹出菜单生成

# Panel

def __init__(self, ...):
    # ...
    self.Bind(wx.EVT_TREE_ITEM_RIGHT_CLICK, self.OnRightClick)

def OnRightClick(self, event):
    popupmenu = wx.Menu()
    entries = ['One', 'Two']
    for entry in entries:
        menuItem = popupmenu.Append(-1, entry)
Run Code Online (Sandbox Code Playgroud)

如何从 TreeEvent 获取 TreeCtrl ItemData?获得此数据后,是否需要将其附加到自定义事件?

编辑:获取项目数据需要采取迂回的方式。

item = event.GetItem()
itemData = self.tree.GetItemData(item).GetData()
Run Code Online (Sandbox Code Playgroud)

wxpython

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

lxml - 默认名称空间

我正在尝试使用 .xml 解析一个 xml 文件lxml

my_tree = etree.parse(file)
my_root = my_tree.getroot()

for child in my_root:
    print(child.tag)

# {some default namespace}Prop
# {some default namespace}Prop
# {some default namespace}Stuff
# ...
Run Code Online (Sandbox Code Playgroud)

理想情况下,我只想用类似的东西获得我想要的所有元素

my_root.findall('Prop', my_root.nsmap)
Run Code Online (Sandbox Code Playgroud)

但这是返回一个空列表。我注意到my_root.nsmap字典有一个带有默认命名空间的 None 项目。

nsmap = {None: 'default namespace', ...}
Run Code Online (Sandbox Code Playgroud)

我通过复制 nsmap 并添加一个与 None 项目具有相同值的“默认”项目找到了一个快速解决方法,然后我做了

my_root.findall('default:Prop', new_map)
Run Code Online (Sandbox Code Playgroud)

这感觉非常hackish。为什么即使在命名空间映射中也没有?lxml 中是否有一些简单的方法可以自动使用默认命名空间?

编辑:我正在查看的 xml 是沿着

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ScenarioProps xmlns="http://filler.com/default.xsd" xmlns:ns2="http://filler.com/ns.xsd" id="Test">
    <Prop id="Wi-Fi">
        <ns2:Position x="0.0" y="0.0" z="0.0"/>
        <ns2:Orientation roll="0.0" pitch="0.0" yaw="0.0"/>
    </Prop>
</ScenarioProps>
Run Code Online (Sandbox Code Playgroud)

python xml lxml

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

绕过装饰器进行单元测试

我有一个装饰器@auth,它基本上检查数据库以确保用户可以访问给定的 REST 调用。我想为这些调用编写一些单元测试。我最初的想法是简单地将装饰器修补成一个什么都不做的通道。(我最初的想法失败了,所以我可能只是在里面修补一些函数,@auth以便它总是通过,但我仍然很好奇是否可以完全绕过装饰器)

我拼凑了一个我希望完成的快速样本。

例子.py

# example.py
from __future__ import print_function

def sample_decorator(func):
    def decorated(*args, **kwargs):
        print("Start Calculation")
        ans = func(*args, **kwargs) + 3
        print(ans)
        print("Finished")
        return ans
    return decorated

@sample_decorator
def add(a, b):
    return a + b
Run Code Online (Sandbox Code Playgroud)

测试示例.py

# test_example.py
from __future__ import print_function
import pytest

import example

def test_add_with_decorator():
    assert example.add(1, 1) == 5

def testadd_with_monkeypatch_out_decorator(monkeypatch):
    monkeypatch.setattr(example, 'sample_decorator', lambda func: func)
    assert example.add(1, 1) == 2  # this fails, but is the behaviour I …
Run Code Online (Sandbox Code Playgroud)

python monkeypatching pytest

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