pandas 方法中的有趣行为
Funny behavior in method of pandas
我在我的 IPython window 中使用 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]:
所以我很好奇为什么我之前忘记了()
却没有报错。这是 pandas 中的错误吗?
谢谢。
与pandas无关。当你使用括号时,你调用括号之前的任何内容。如果你不使用括号,你只是把那个对象作为一个对象来获取,不管它是什么。在这种情况下,您有 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>
省略括号不一定是错误。它允许您将 function/method/callable 本身作为一个对象来引用,以便存储并可能稍后调用。
我在我的 IPython window 中使用 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]:
所以我很好奇为什么我之前忘记了()
却没有报错。这是 pandas 中的错误吗?
谢谢。
与pandas无关。当你使用括号时,你调用括号之前的任何内容。如果你不使用括号,你只是把那个对象作为一个对象来获取,不管它是什么。在这种情况下,您有 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>
省略括号不一定是错误。它允许您将 function/method/callable 本身作为一个对象来引用,以便存储并可能稍后调用。