Python 在对FOR循环内的行执行求和操作时排除NaN值

Python 在对FOR循环内的行执行求和操作时排除NaN值,python,Python,我有两个数据帧,如下所示 df1= 2492 3853 2486 3712 2288 0 4 NaN 3.5 NaN NaN 1 3 NaN 2.0 4.5 3.5 2 3 3.5 4.5 NaN 3.5 3 3. NaN 3.5 4.5 NaN df2= 2492 0.476683 3853 0.464110 2486 0.438992 3712 0.400275 2288 0

我有两个数据帧,如下所示

df1=
   2492  3853  2486  3712  2288
0    4   NaN   3.5   NaN   NaN
1    3   NaN   2.0   4.5   3.5
2    3   3.5   4.5   NaN   3.5
3    3.   NaN   3.5   4.5   NaN


df2=

2492  0.476683
3853  0.464110
2486  0.438992
3712  0.400275
2288  0.379856
现在我想通过排除NaN值得到df2值的总和 预期产量

0    0.915675[0.476683+0.438992]
1    1.695806[0.476683+0.438992+0.400275+0.379856]
2    1.759641[0.476683+0.464110+0.438992+0.379856]    
3    1.31595 [0.476683+0.438992+0.400275]
请告诉我您对如何实现此问题的想法(不将NaN值替换为“0”)

应该足够了,跳过NaNs

第一个
sum
是一个数据帧方法,它返回一个包含每行总和的序列,然后第二个是对该序列上的值求和

默认情况下,会忽略NAN

编辑:只需使用
df2.sum()
就足够了

您可以:

>>> ((df1.fillna(0)>0)*1).mul(df2.iloc[:,1].values).sum(axis=1)
0    0.915675
1    1.695806
2    1.759641
3    1.315950
dtype: float64

请注意,
NaN
未被“引用”替换,在执行此操作后,您的原始
df1
中仍有
NaN

以下答案之一是否解决了您的问题?
>>> ((df1.fillna(0)>0)*1).mul(df2.iloc[:,1].values).sum(axis=1)
0    0.915675
1    1.695806
2    1.759641
3    1.315950
dtype: float64