Numpy-np.multiply()导致版本1.21.3中的nan



我有两个环境:

环境#1(旧(:

Python 3.7.5
Numpy 1.15.4

环境#2(新(:

Python 3.8.10
Numpy 1.21.3

当我在环境#2(新(中运行以下代码时,它不会产生与环保#1(旧(中相同的输出:

>>> # THIS IS OUTPUT FROM Environment #2 (new)
>>> df[attr.AMOUNT_GL]
8    112.233446
9    112.233446
Name: AMOUNT_GL, dtype: float64
>>> 
>>> sub_asset_gr_amount
112.23344556677898
>>> 
>>> df.loc[_filter, attr.KEY]
9    0.5
Name: KEY, dtype: float64
>>> 
>>> np.multiply((df[attr.AMOUNT_GL] / sub_asset_gr_amount), df.loc[_filter, attr.KEY])
8    NaN # <<- This is a difference
9    0.5
dtype: float64
>>> 

df和其他变量在环境#1(旧(中具有完全相同的值,但是,np.multiply()的结果如下所示:

>>> # THIS IS OUTPUT FROM Environment #1 (old)
>>> df[attr.AMOUNT_GL]
8    112.233446
9    112.233446
Name: AMOUNT_GL, dtype: float64
>>> 
>>> sub_asset_gr_amount
112.23344556677898
>>> 
>>> df.loc[_filter, attr.KEY]
9    0.5
Name: KEY, dtype: float64
>>> np.multiply((df[attr.AMOUNT_GL] / sub_asset_gr_amount), df.loc[_filter, attr.KEY])
8    0.5 # <<- This is a difference
9    0.5
Name: AMOUNT_GL, dtype: float64
>>> 

差异具体在np.multiply()的输出中的这一行中:8 NaN8 0.5

我如何确保在我的环境#2(新(中,结果与环境#1(旧(

非常感谢

最后我得到了以下代码:

# Create a diff DataFrame which contains only rows to multiply
df_diff = df.join(df.loc[_filter], how="inner", rsuffix="_r")
# Remove suffixed columns from df_diff since they only contain duplicate values
df_diff.drop(df_diff.filter(regex='_r$').columns.tolist(), axis=1, inplace=True)
# Calculate the weighted portion to be added to the original key
calculated_numbers = np.multiply((df_diff[attr.AMOUNT_GL] / sub_asset_gr_amount), df_diff.loc[_filter, attr.KEY])
# Apply the calculated numbers to df_diff
df_diff.loc[:, attr.KEY] = df_diff[attr.KEY] + calculated_numbers 
# Merge back and replace the values in df with values from df_diff
df.update(df_diff)

最新更新