我正在尝试在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) 我正在尝试从Matlab迁移到python.Matlab的一个好处是,在调试时我可以在某些代码中放置一个断点,然后从命令行调用该代码.使用PyCharm + IPython我还没有找到在Python中执行此操作的方法.我似乎必须在调试模式下运行整个脚本来执行任何调试,而不是通过简单的命令来执行此操作.我想我可以用我感兴趣的命令编写一行脚本,但似乎应该有更好的方法.这样做的Python方法是什么?
我正试图从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程序中使用的包正在发出警告,我想了解其确切原因.我已经设置logging.captureWarning(True)
并在捕获日志中捕获警告,但仍然不知道它来自何处.我如何记录堆栈跟踪,以便我可以看到警告来自哪里?我用traceback
吗?
我很想继承并继承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)
如果没有,我该怎么办?如果是这样,为什么会更好?
注意:我意识到这是一个过于简化的示例。
我已成功实施Bellman-Ford,以便在边缘具有负重量/距离时找到最短路径的距离.我无法让它返回所有最短路径(当有最短路径时).我设法用Dijkstra获得所有最短的路径(在给定的节点对之间).Bellman-Ford有可能吗?(只是想知道我是否在浪费时间尝试)
我设法使用正则表达式拼凑一个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 ×6
ipython ×2
matlab ×2
pandas ×2
algorithm ×1
bellman-ford ×1
composition ×1
debugging ×1
inheritance ×1
logging ×1
regex ×1
stack-trace ×1
warnings ×1