Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算替换NaN的值之和_Python_Pandas - Fatal编程技术网

Python 计算替换NaN的值之和

Python 计算替换NaN的值之和,python,pandas,Python,Pandas,我有一个数据框,在B列中有一些N df = pd.DataFrame({ 'A':[654,987,321,654,987,15,98,338], 'B':[987,np.nan,741,np.nan, 65,35,94,np.nan]}) df A B 0 654 987.0 1 987 NaN 2 321 741.0 3 654 NaN 4 987 65.0 5 15 35.0 6 98 94.0 7 338 NaN 我用表

我有一个数据框,在B列中有一些N

df = pd.DataFrame({
    'A':[654,987,321,654,987,15,98,338],
    'B':[987,np.nan,741,np.nan, 65,35,94,np.nan]})
df

    A   B
0   654 987.0
1   987 NaN
2   321 741.0
3   654 NaN
4   987 65.0
5   15  35.0
6   98  94.0
7   338 NaN
我用表格A中的数字替换B中的NaN

df.B.fillna(df.A, inplace = True)
df


    A   B
0   654 987.0
1   987 987.0
2   321 741.0
3   654 654.0
4   987 65.0
5   15  35.0
6   98  94.0
7   338 338.0
用什么最简单的方法来计算取代B中的NaN的值之和

您可以使用with来过滤满足列B为空的条件的列A,然后求和:

df.loc[df['B'].isna(),'A'].sum()
备选方案:

df['B'].fillna(df['A']).sum() - df['B'].sum()
注意:您应该在执行就地操作之前执行此操作,或者最好创建一个副本并保存在另一个变量下以供以后参考。

尝试使用函数math.isnan检查NaN值

import numpy as np
import pandas as pd
import math 



df = pd.DataFrame({
        'A':[654,987,321,654,987,15,98,338],
        'B':[987,np.nan,741,np.nan, 65,35,94,np.nan]})


    for i in range(0,len(df['B'])):
        if (math.isnan(df['B'][i])):
            df['B'][i] = df['A'][i]

    print(df)
输出:

  A      B
0  654  987.0
1  987  987.0
2  321  741.0
3  654  654.0
4  987   65.0
5   15   35.0
6   98   94.0
7  338  338.0