Python 计算替换NaN的值之和
我有一个数据框,在B列中有一些NPython 计算替换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 我用表
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