大熊猫方法中的搞笑行为

时间:2015-01-22 07:36:13

标签: python methods pandas dataframe standard-deviation

我在我的IPython窗口中使用pandas,并且在对pandas groupby对象进行方法调用后意外忘记添加括号:

In [68]: df_first.groupby('build_number').std
Out[68]: <bound method DataFrameGroupBy.std of <pandas.core.groupby.DataFrameGroupBy object at 0x7f2742f930d0>>

但是,不是可能告诉我错过了括号的错误或异常,而是在Out[68]中收到消息。放完括号后,我得到预期的输出:

In [69]: df_first.groupby('build_number').std()
Out[69]: 
                     cycles
build_number               
1300          108044.174347
1301          108041.973597
1302          108042.702563
1303          108043.290047
1304          108043.024902
1305          108042.704441

In [70]: 

所以我很好奇为什么在我之前忘记()时没有收到错误。这是熊猫中的一个错误吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

它与熊猫无关。当您使用括号时,您可以调用括号前的任何内容。如果你不使用括号,你只需将该对象作为一个对象,无论它是什么。在这种情况下,您有df_first.groupby('build_number').std,这是一个方法对象。

您可以看到与pandas无关的各种其他功能和方法的相同行为:

>>> len
<built-in function len>
>>> list.index
<method 'index' of 'list' objects>
>>> ''.join
<built-in method join of str object at 0x0000000001C93148>

省略括号不一定是错误。它允许您将函数/ method / callable称为对象本身,以便存储并稍后调用。