减去数据帧pandas时的NaNs

时间:2016-11-17 12:23:11

标签: python pandas dataframe subtraction

我有两个数据帧,只有一些重叠的索引和列。

old = pd.DataFrame(index = ['A', 'B', 'C'],
                   columns = ['k', 'l', 'm'],
                   data = abs(np.floor(np.random.rand(3, 3)*10)))

new = pd.DataFrame(index = ['A', 'B', 'C', 'D'],
                   columns = ['k', 'l', 'm', 'n'],
                   data = abs(np.floor(np.random.rand(4, 4)*10)))

我想计算它们之间的差异并尝试

delta = new - old

这会给索引和列不匹配的大量NaN。我想将索引和列的abscence视为零,(old ['n','D'] = 0)。 old永远是新的子空间。

有什么想法吗?

编辑: 我想我没有彻底解释它。我不想用零填充delta数据帧。我想把旧的缺失索引和列视为零。然后我会在delta ['n','D']中以delta而不是NaN获得值。

1 个答案:

答案 0 :(得分:7)

subfill_value=0

一起使用
In [15]:
old = pd.DataFrame(index = ['A', 'B', 'C'],
                   columns = ['k', 'l', 'm'],
                   data = abs(np.floor(np.random.rand(3, 3)*10)))
​
new = pd.DataFrame(index = ['A', 'B', 'C', 'D'],
                   columns = ['k', 'l', 'm', 'n'],
                   data = abs(np.floor(np.random.rand(4, 4)*10)))
delta = new.sub(old, fill_value=0)
delta

Out[15]:
   k  l  m  n
A  0  3 -9  7
B  0 -2  1  8
C -4  1  1  7
D  8  6  0  6