小编use*_*844的帖子

在pandas Series或DataFrame中查找最后一个真值的索引

我正在尝试在pandas布尔系列中找到最后一个True值的索引.我目前的代码如下所示.有没有更快或更清洁的方式这样做?

import numpy as np
import pandas as pd
import string

index = np.random.choice(list(string.ascii_lowercase), size=1000)
df = pd.DataFrame(np.random.randn(1000, 2), index=index)
s = pd.Series(np.random.choice([True, False], size=1000), index=index)

last_true_idx_s = s.index[s][-1]
last_true_idx_df = df[s].iloc[-1].name
Run Code Online (Sandbox Code Playgroud)

python pandas

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

在Python中使用控制台中的断点进行调试

我正在尝试从Matlab迁移到python.Matlab的一个好处是,在调试时我可以在某些代码中放置一个断点,然后从命令行调用该代码.使用PyCharm + IPython我还没有找到在Python中执行此操作的方法.我似乎必须在调试模式下运行整个脚本来执行任何调试,而不是通过简单的命令来执行此操作.我想我可以用我感兴趣的命令编写一行脚本,但似乎应该有更好的方法.这样做的Python方法是什么?

python debugging matlab ipython

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

是否有可能像Matlab一样在IPython中显示对象实例变量呢?

我正试图从Matlab转向Python.虽然神奇?在IPython中很好,Matlab的一个非常好的功能是你可以在命令行上看到(通过省略;)相关对象的实例变量(在Matlab中称为属性).这可能在python中(我想通过IPython)?

理想情况下这样的类:

class MyClass(object):
    _x = 5

    @property
    def x(self):
        return self._x + 100

    @x.setter
    def x(self, value):
        self._x = value + 1

    def myFunction(self, y):
        return self.x ** 2 + y
Run Code Online (Sandbox Code Playgroud)

会显示如下:

mc = Myclass()
mc
<package.MyClass> <superclass1> <superclass2>

Attributes:
_x: 5
 x: 105

Method Attributes:
myFunction(self, y)
Run Code Online (Sandbox Code Playgroud)

这是否可以通过覆盖类的打印方法(如果这样的东西退出)?或者通过ipython中的魔术方法?

python matlab ipython

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

用于python警告的日志堆栈跟踪

我正在我的python程序中使用的包正在发出警告,我想了解其确切原因.我已经设置logging.captureWarning(True)并在捕获日志中捕获警告,但仍然不知道它来自何处.我如何记录堆栈跟踪,以便我可以看到警告来自哪里?我用traceback吗?

python logging warnings stack-trace

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

如何对Pandas DataFrame和Series使用组合而不是继承

我很想继承并继承DataFrame用例的pandas子类,但是从我读到的有关良好编程Pandas内部文档的所有内容来看,这样做是不正确的。

举一个简化的例子,我的行DataFrame是人,字段是身高和体重。我很想继承子类,以便可以使用的方法bmi()。我将按以下方式进行操作:

将熊猫作为pd导入

class People(pd.DataFrame):
    def __init__(self, *args, **kwargs):
        super(People, self).__init__(*args, **kwargs)

    def bmi(self):
        return self['weight'] / self['height'] ** 2 x 703

people = People([[172, 74], [100, 60]])
bmi = people.bmi()
Run Code Online (Sandbox Code Playgroud)

我将如何使用合成来做到这一点?会是这样吗?

class People(object):
    def __init__(self, data):
        self.data = pd.DataFrame(data)

    def bmi(self):
        return self.data['weight'] / self.data['height'] ** 2 x 703

people = People([[172, 74], [100, 60]])
bmi = people.bmi()
Run Code Online (Sandbox Code Playgroud)

如果没有,我该怎么办?如果是这样,为什么会更好?

注意:我意识到这是一个过于简化的示例。

python inheritance composition pandas

5
推荐指数
0
解决办法
958
查看次数

贝尔曼 - 福特:所有最短路径

我已成功实施Bellman-Ford,以便在边缘具有负重量/距离时找到最短路径的距离.我无法让它返回所有最短路径(当有最短路径时).我设法用Dijkstra获得所有最短的路径(在给定的节点对之间).Bellman-Ford有可能吗?(只是想知道我是否在浪费时间尝试)

algorithm shortest-path bellman-ford

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

python函数将驼峰案例转换为蛇案例

我设法使用正则表达式拼凑一个python函数将驼峰转换为蛇案例,它适用于我的所有测试用例,但我还有几个问题.

1)三个陈述中的每一个实际上做了什么?

import re

test_cases = list()
test_cases.append('camelCase')
test_cases.append('camelCaseCase')
test_cases.append('camel2Case')
test_cases.append('camel12Case')
test_cases.append('camel12Case')
test_cases.append('camelCaseURL')
test_cases.append('camel2CaseURL')
test_cases.append('camel12CaseURL')
test_cases.append('camel12Case2URL')
test_cases.append('camel12Case12URL')
test_cases.append('CamelCase')
test_cases.append('CamelCaseCase')
test_cases.append('URLCamelCase')


def camel_to_snake(string):
    string = re.sub('(.)([A-Z][a-z]+)', r'\1_\2', string)
    string = re.sub('(.)([0-9]+)', r'\1_\2', string)
    return re.sub('([a-z0-9])([A-Z])', r'\1_\2', string).lower()


for string in test_cases:
    print(string + ' -> ' + camel_to_snake(string))
Run Code Online (Sandbox Code Playgroud)

结果如下:

camelCase -> camel_case
camelCaseCase -> camel_case_case
camel2Case -> camel_2_case
camel12Case -> camel_12_case
camel12Case -> camel_12_case
camelCaseURL -> camel_case_url
camel2CaseURL -> camel_2_case_url
camel12CaseURL -> camel_12_case_url
camel12Case2URL -> camel_12_case_2_url
camel12Case12URL -> camel_12_case_12_url
CamelCase -> …
Run Code Online (Sandbox Code Playgroud)

python regex

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