iT邦幫忙

2025 iThome 鐵人賽

DAY 21
0
佛心分享-讓我升級的那些書

菜雞學習 pandas 的 30 日讀書分享系列 第 21

菜雞學習 pandas 的 30 日讀書分享【Day 21】特別值算術運算

  • 分享至 

  • xImage
  •  

https://ithelp.ithome.com.tw/upload/images/20250821/20168290kbwFaLwlwB.jpg

特別值算術運算

使用兩個索引不完全相同的物件來做算術運算時,假如想在軸標籤其中一個物件中找到時填入特別值,例如 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

使用 df1add 方法,並傳入 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(): 次方 (**)

今日的分享就到這囉,我們明天見,掰掰!


上一篇
菜雞學習 pandas 的 30 日讀書分享【Day 20】 算術與資料對齊
下一篇
菜雞學習 pandas 的 30 日讀書分享【Day 22】DataFrame 與 Series 之間運算
系列文
菜雞學習 pandas 的 30 日讀書分享30
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言