首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Numpy - np.multiply()在1.21.3版本中生成nan

Numpy - np.multiply()在1.21.3版本中生成nan
EN

Stack Overflow用户
提问于 2021-12-17 12:27:51
回答 1查看 75关注 0票数 1

我有两个环境:

环境#1 (旧):

代码语言:javascript
复制
Python 3.7.5
Numpy 1.15.4

环境#2 (新):

代码语言:javascript
复制
Python 3.8.10
Numpy 1.21.3

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

代码语言:javascript
复制
>>> # 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()的结果如下所示:

代码语言:javascript
复制
>>> # 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
>>> 

differencenp.multiply()8 NaN vs 8 0.5的输出中特别显示在该行中。

如何确保环境#2 (新的)中的结果与环境#1 (旧的)中的结果相同?本质上,如何使np.multiply()的输出成为8 0.5而不是8 NaN

非常感谢

EN

回答 1

Stack Overflow用户

发布于 2021-12-22 07:57:21

最后,我得到了以下代码:

代码语言:javascript
复制
        # 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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70393193

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档