0

我想将AandB与 column结合起来agename成为它们的抽象区别。如果其中之一是NaN,则设置为非NaN值的摘要;如果两者都是 NaN,则设置为 0。

import numpy as np
import pandas as pd

B =pd.DataFrame({'age':[1,2], 'name':[np.nan,5]}, index=['a', 'b'])
A =pd.DataFrame({'age':[1,2,3], 'name':[4,5,np.nan], 'work':[7,8,9]}, index=['a', 'b','c'])

有预期的结果

   age  name  work
a  0.0   4     7
b  0.0   0.0   8
c  3     0.0   9

我有两个问题:

  1. 那么获得上述结果的最简单方法是什么?

我想过一种使用方式np.abs(A - B),但结果是

   age  name  work
a  0.0   NaN   NaN 
b  0.0   0.0   NaN 
c  NaN   NaN   NaN 
  1. 如果 A 或 B 在相应的单元格中有值,如何枚举数据框中的所有NaN值以实现该值?
4

1 回答 1

0

你可以做:

A-B.reindex_like(A).fillna(0)

或更短:

A.sub(B, fill_value=0)

输出:

   age  name  work
a  0.0   4.0   7.0
b  0.0   0.0   8.0
c  3.0   NaN   9.0
于 2020-06-30T15:21:50.230 回答