在pandas 0.22.0
发布后,对sum()
和product()
进行了重大更改,What's New Section对此进行了讨论。我正在与一些数学书呆子数学家谈论这个,这有一些重大意义!我想知道为什么这个改变。这仅仅是为了重新取样,分组等的解释吗?似乎NaN
现在被视为identity element.
在基本数学术语中,Identity Function始终返回通过它传递的相同值。考虑x=y
或1 + 0 = 1
或2 * 1 = 2
。 0是添加的标识元素(x+0
将返回x
),而1是乘法的标识元素(x*1
将返回x
)。
以下测试:
0.20.2
import pandas as pd
import numpy as np
df = pd.DataFrame({'test': [3,2,3], 'nans':[3,np.NaN,np.NaN]})
df2 = pd.DataFrame({'test': [3,2,3], 'nans':[np.NaN,np.NaN,np.NaN]})
df.prod() df2.prod()
nans 3.0 nans NaN
test 18.0 test 18.0
df.sum() df2.sum()
nans 3.0 nans NaN
test 8.0 test 8.0
#----------------------------------------------------
'0.22.0'
df.prod() df2.prod()
nans 3.0 nans 1.0
test 18.0 test 18.0
df.sum() df2.sum()
nans 3.0 nans 0.0
test 8.0 test 8.0
请注意,df
的最左侧示例保持不变。但是df2
会发生变化。这种变化是由于我的假设NaNs
被视为身份元素吗?或者这是Red Herring?是否有人有任何文件或进一步解释为什么发生了这种变化?