我在我的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]:
所以我很好奇为什么在我之前忘记()
时没有收到错误。这是熊猫中的一个错误吗?
谢谢。
答案 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称为对象本身,以便存储并稍后调用。