新熊猫产品/和逻辑

时间:2018-02-06 17:07:33

标签: python pandas math

pandas 0.22.0发布后,对sum()product()进行了重大更改,What's New Section对此进行了讨论。我正在与一些数学书呆子数学家谈论这个,这有一些重大意义!我想知道为什么这个改变。这仅仅是为了重新取样,分组等的解释吗?似乎NaN现在被视为identity element.

基本数学术语中,Identity Function始终返回通过它传递的相同值。考虑x=y1 + 0 = 12 * 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?是否有人有任何文件或进一步解释为什么发生了这种变化?

1 个答案:

答案 0 :(得分:1)

您可以在此处查看有关更改的讨论。

https://github.com/pandas-dev/pandas/issues/9422