我有两个环境:
环境#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
>>> difference在np.multiply():8 NaN vs 8 0.5的输出中特别显示在该行中。
如何确保环境#2 (新的)中的结果与环境#1 (旧的)中的结果相同?本质上,如何使np.multiply()的输出成为8 0.5而不是8 NaN
非常感谢
发布于 2021-12-22 07:57:21
最后,我得到了以下代码:
# 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)https://stackoverflow.com/questions/70393193
复制相似问题