我有两个环境:
环境#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 NaN
与8 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)