小编And*_*den的帖子

在Python中"取消捕获"异常

我应该如何"重新抛出"异常,也就是说,假设:

  • 我在我的代码中尝试了一些东西,不幸的是它失败了.
  • 我尝试了一些"聪明"的解决方法,这次碰巧也失败了

如果我从(失败的)解决方法中抛出异常,那对用户来说会非常混乱,所以我认为最好重新抛出原始异常(?),并附带描述性回溯(关于实际的)问题)...

注意:这方面的激励示例是在调用时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 exception-handling exception

19
推荐指数
3
解决办法
3497
查看次数

选择在异常中报告哪一行

假设我在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行引发异常.

这个问题的灵感来自于这个例子,@ Godman 指出异常不会发生在最后一行(正如我之前所想的那样).

python exception

18
推荐指数
2
解决办法
393
查看次数

在Mac OSX上安装Pandas

我在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)

python pandas

17
推荐指数
5
解决办法
10万
查看次数

为MultiIndex DataFrame中的切片指定新值

我想从我的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)

python multi-index dataframe pandas

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

pandas DataFrame的序列化

有没有快速的方法来进行DataFrame的序列化?

我有一个可以并行运行熊猫分析的网格系统.最后,我想从每个网格作业中收集所有结果(作为DataFrame),并将它们聚合成一个巨大的DataFrame.

如何以可快速加载的二进制格式保存数据框?

python pandas

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

部分函数与lambda的地图列表

我想知道对于大多数例子来说,使用它还是更具"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程序员的主流选择是什么.

python

16
推荐指数
2
解决办法
3281
查看次数

绘制包含NaN的pandas数据帧

我有来自三个不同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(而不是仅比其他接收器更粗略的采样频率).

还有其他人遇到过这个吗?感谢任何关于这个问题的想法:)

data-analysis ipython pandas

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

是一个RoboCode像游戏或挑战Python?

我正在寻找类似于RoboCodeScalatron的游戏或挑战.我对Project Euler这样的挑战不感兴趣,在那里我获得了解决特定问题的积分.我正在寻找直接竞争.我知道http://sumost.ca/steve/games/但遗憾的是没有基于python的项目.如果您有任何建议,请与我分享.

python robocode

15
推荐指数
2
解决办法
4953
查看次数

在熊猫中运行总和(无循环)

我想在熊猫数据框架上构建一个运行总和.我有类似的东西:

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)

因此,每个单元格应该是自身和所有先前单元格的总和,如何在不使用循环的情况下执行此操作.

python pandas

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

在DataFrame索引中查找标签位置

我有一个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告诉这个标签的整数值是多少?

python pandas

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