使用兩個索引不完全相同的物件來做算術運算時,假如想在軸標籤其中一個物件中找到時填入特別值,例如 0
。
將一個特定值設為 np.nan
來將他設定成 NA
(null):
In [197]: df1 = pd.DataFrame(np.range(12.).reshape((3, 4)),
columns=list("abcd"))
In [198]: df2 = pd.DataFrame(np.range(20.).reshape((4, 5)),
columns=list("abcde"))
In [199]: df2.loc[1, "b"] = np.nan
In [200]: df1
Out[200]:
a b c d
0 0.0 1.0 2.0 3.0
1 4.0 5.0 6.0 7.0
2 8.0 9.0 10.0 11.0
In [201]: df2
Out[201]:
a b c d e
0 0.0 1.0 2.0 3.0 4.0
1 5.0 NaN 7.0 8.0 9.0
2 10.0 11.0 12.0 13.0 14.0
3 15.0 16.0 17.0 18.0 19.0
相加後會在不重疊的地方產生缺失值:
In [202]: df1 + df2
Out[202]:
a b c d e
0 0.0 2.0 4.0 6.0 NaN
1 9.0 NaN 13.0 15.0 NaN
2 18.0 20.0 22.0 24.0 NaN
3 NaN NaN NaN NaN NaN
使用 df1
的 add
方法,並傳入 df2
與一個 fill_value
引數,該引述會將運算產生的任何缺失值轉成輸入值:
In [203]: df1.add(df2, fill_value=0)
Out[203]:
a b c d e
0 0.0 2.0 4.0 6.0 4.0
1 9.0 5.0 13.0 15.0 9.0
2 18.0 20.0 22.0 24.0 14.0
3 15.0 16.0 17.0 18.0 19.0
add()
, radd
: 加法 (+
)sub()
, rsub
: 減法 (-
)div()
, rdiv
: 除法 (/
)floordiv()
, rfloordiv()
: 取整除法 (//
)mul()
, rmul()
: 乘法 (*
)pow()
, rpow()
: 次方 (**
)今日的分享就到這囉,我們明天見,掰掰!