我应该如何"重新抛出"异常,也就是说,假设:
如果我从(失败的)解决方法中抛出异常,那对用户来说会非常混乱,所以我认为最好重新抛出原始异常(?),并附带描述性回溯(关于实际的)问题)...
注意:这方面的激励示例是在调用时np.log(np.array(['1'], dtype=object))
,它尝试一个诙谐的解决方法并给出一个AttributeError
(它"真的"一个TypeError
).
我能想到的一种方法就是重新调用有问题的函数,但这似乎是伪造的(理论上,原始函数可能会在第二次调用时发挥一些不同的行为):
好的,这是一个可怕的例子,但是...
def f():
raise Exception("sparrow")
def g():
raise Exception("coconut")
def a():
f()
Run Code Online (Sandbox Code Playgroud)
假设我这样做了:
try:
a()
except:
# attempt witty workaround
g()
---------------------------------------------------------------------------
Exception Traceback (most recent call last)
<ipython-input-4-c76b7509b315> in <module>()
3 except:
4 # attempt witty workaround
----> 5 g()
6
<ipython-input-2-e641f2f9a7dc> in g()
4
5 def g():
----> 6 raise Exception("coconut")
7
8
Exception: coconut
Run Code Online (Sandbox Code Playgroud)
嗯,问题根本不在于椰子,而是麻雀: …
假设我在Python中有一个多行引发异常.
Python如何决定引发异常的哪一行?
示例:( 注意:我可以\
在每行后使用反斜杠)
(1
+0/0
+3)
Run Code Online (Sandbox Code Playgroud)
在第3行引发异常(ZeroDivisionError
异常,at +3)
).
(1
+
0/0
)
Run Code Online (Sandbox Code Playgroud)
在第3行引发异常.
(0/0
+
1)
Run Code Online (Sandbox Code Playgroud)
在第2行引发异常.
我在Mac OSX计算机上安装Python Pandas库时遇到问题.
我在终端输入以下内容:
$ sudo easy_install pandas
Run Code Online (Sandbox Code Playgroud)
但后来我得到以下内容:
Searching for pandas
Reading http://pypi.python.org/simple/pandas/
Reading http://pandas.pydata.org
Reading http://pandas.sourceforge.net
Best match: pandas 0.9.0
Downloading http://pypi.python.org/packages/source/p/pandas/pandas-
0.9.0.zip#md5=04b1d8e11cc0fc30ae777499d89003ec
Processing pandas-0.9.0.zip
Writing /tmp/easy_install-ixjbQO/pandas-0.9.0/setup.cfg
Running pandas-0.9.0/setup.py -q bdist_egg --dist-dir /tmp/easy_install-ixjbQO/pandas-
0.9.0/egg-dist-tmp-EGREoT
warning: no files found matching 'setupegg.py'
no previously-included directories found matching 'doc/build'
warning: no previously-included files matching '*.so' found anywhere in distribution
warning: no previously-included files matching '*.pyd' found anywhere in distribution
warning: no previously-included files matching '*.pyc' found anywhere in distribution
warning: no …
Run Code Online (Sandbox Code Playgroud) 我想从我的DataFrame中的列修改一些值.目前,我通过原始的多索引从select中查看df
(并且修改确实发生了变化df
).
这是一个例子:
In [1]: arrays = [np.array(['bar', 'bar', 'baz', 'qux', 'qux', 'bar']),
np.array(['one', 'two', 'one', 'one', 'two', 'one']),
np.arange(0, 6, 1)]
In [2]: df = pd.DataFrame(randn(6, 3), index=arrays, columns=['A', 'B', 'C'])
In [3]: df
A B C
bar one 0 -0.088671 1.902021 -0.540959
two 1 0.782919 -0.733581 -0.824522
baz one 2 -0.827128 -0.849712 0.072431
qux one 3 -0.328493 1.456945 0.587793
two 4 -1.466625 0.720638 0.976438
bar one 5 -0.456558 1.163404 0.464295
Run Code Online (Sandbox Code Playgroud)
我尝试将片段修改df
为标量值:
In …
Run Code Online (Sandbox Code Playgroud) 有没有快速的方法来进行DataFrame的序列化?
我有一个可以并行运行熊猫分析的网格系统.最后,我想从每个网格作业中收集所有结果(作为DataFrame),并将它们聚合成一个巨大的DataFrame.
如何以可快速加载的二进制格式保存数据框?
我想知道对于大多数例子来说,使用它还是更具"pythonic" 功能lambda
还是partial
功能?
例如,我可能想要应用于imap
某些列表,例如使用以下内容为每个元素添加3:
imap(lambda x : x + 3, my_list)
Run Code Online (Sandbox Code Playgroud)
或者使用partial
:
imap(partial(operator.add, 3), my_list)
Run Code Online (Sandbox Code Playgroud)
我意识到在这个例子中循环可能更容易实现它,但我正在考虑更多非平凡的例子.
在Haskell中,我会在上面的例子中轻松选择部分应用程序,但我不确定Python.对我来说,lambda似乎是更好的选择,但我不知道大多数python程序员的主流选择是什么.
我有来自三个不同GPS接收器的冰速GPS数据.数据位于熊猫数据框中,其索引为朱利安日(从2009年开始增量).
这是数据的子集(主数据集是3487235行...):
R2 R7 R8
1235.000000 116.321959 100.805197 96.519977
1235.000116 NaN 100.771133 96.234957
1235.000231 NaN 100.584559 97.249262
1235.000347 118.823610 100.169055 96.777833
1235.000463 NaN 99.753551 96.598350
1235.000579 NaN 99.338048 95.283989
1235.000694 113.995003 98.922544 95.154067
Run Code Online (Sandbox Code Playgroud)
数据框具有以下形式:
Index: 6071320 entries, 127.67291667 to 1338.51805556 Data columns: R2 3487235 non-null values R7 3875864 non-null values R8 1092430 non-null values dtypes: float64(3)
R2以不同的速率对R7和R8进行采样,因此NaNs系统地出现在该间距处.
尝试df.plot()
绘制整个数据帧(或其索引行位置)在绘制R7和R8方面工作正常,但不绘制R2.同样,只是做df.R2.plot()
也不起作用.绘制R2的唯一方法是做df.R2.dropna().plot()
,但这也会删除表示无数据周期的NaN(而不是仅比其他接收器更粗略的采样频率).
还有其他人遇到过这个吗?感谢任何关于这个问题的想法:)
我正在寻找类似于RoboCode或Scalatron的游戏或挑战.我对Project Euler这样的挑战不感兴趣,在那里我获得了解决特定问题的积分.我正在寻找直接竞争.我知道http://sumost.ca/steve/games/但遗憾的是没有基于python的项目.如果您有任何建议,请与我分享.
我想在熊猫数据框架上构建一个运行总和.我有类似的东西:
10/10/2012: 50, 0
10/11/2012: -10, 90
10/12/2012: 100, -5
Run Code Online (Sandbox Code Playgroud)
我想得到:
10/10/2012: 50, 0
10/11/2012: 40, 90
10/12/2012: 140, 85
Run Code Online (Sandbox Code Playgroud)
因此,每个单元格应该是自身和所有先前单元格的总和,如何在不使用循环的情况下执行此操作.
我有一个pandas数据帧:
import pandas as pnd
d = pnd.Timestamp('2013-01-01 16:00')
dates = pnd.bdate_range(start=d, end = d+pnd.DateOffset(days=10), normalize = False)
df = pnd.DataFrame(index=dates, columns=['a'])
df['a'] = 6
print(df)
a
2013-01-01 16:00:00 6
2013-01-02 16:00:00 6
2013-01-03 16:00:00 6
2013-01-04 16:00:00 6
2013-01-07 16:00:00 6
2013-01-08 16:00:00 6
2013-01-09 16:00:00 6
2013-01-10 16:00:00 6
2013-01-11 16:00:00 6
Run Code Online (Sandbox Code Playgroud)
我有兴趣找到其中一个标签的标签位置,比方说,
ds = pnd.Timestamp('2013-01-02 16:00')
Run Code Online (Sandbox Code Playgroud)
看一下索引值,我知道这是这个标签的整数位置1.怎样才能让pandas告诉这个标签的整数值是多少?