1、DataFrame算術運算
- 加:add 或 +
- 減:sub 或 -
DataFrame后面簡稱DF
2、DF與標量之間的運算
這個才是最重要的!!!
1)原始數據
x = [[np.nan,1,1,1,1],[2,2,np.nan,2,2],[3,3,3,3,3],[4,np.nan,4,4,4]] df = pd.DataFrame(x,columns=list("abcde")) display(df)
結果如下:
2)DataFrame與標量的加法運算
① 使用“+”運算符
x = [[np.nan,1,1,1,1],[2,2,np.nan,2,2],[3,3,3,3,3],[4,np.nan,4,4,4]] df = pd.DataFrame(x,columns=list("abcde")) display(df) # DataFrame與標量的運算:df中的每個元素與100一一相加 df1 = df + 100 display(df1) # 一列(Series)與標量的運算 display(df["a"]) df["a"] = df["a"] + 100 display(df)
結果如下:
② 使用“add()”函數
x = [[np.nan,1,1,1,1],[2,2,np.nan,2,2],[3,3,3,3,3],[4,np.nan,4,4,4]] df = pd.DataFrame(x,columns=list("abcde")) display(df) df1 = df.add(100) display(df1) # 可以使用fill_value參數,給缺失值nan添加默認值 df2 = df.add(100,fill_value=1000) display(df2)
結果如下:
注意:減法運算和加法運算的運算一摸一樣,只需要將+換為-,將add()換位sub()即可。
3、DF與DF之間的運算
1)原始數據
x = pd.DataFrame({"a":[1,2,3], "b":[2,3,4], "c":[3,4,5]}) display(x) y = pd.DataFrame({"a":[1,2,3], "b":[2,3,4], "d":[3,4,5]}, index=[1,2,3]) display(y)
結果如下:
2)DataFrame與DataFrame之間的減法運算
① 使用“+”運算符
x = pd.DataFrame({"a":[1,2,3], "b":[2,3,4], "c":[3,4,5]}) display(x) y = pd.DataFrame({"a":[1,2,3], "b":[2,3,4], "d":[3,4,5]}, index=[1,2,3]) display(y) display(x+y)
結果如下:
② 使用“sub()”函數
x = pd.DataFrame({"a":[1,2,3], "b":[2,3,4], "c":[3,4,5]}) display(x) y = pd.DataFrame({"a":[1,2,3], "b":[2,3,4], "d":[3,4,5]}, index=[1,2,3]) display(y) z = x.sub(y) display(z) z1 = x.sub(y,fill_value=100) display(z1)
結果如下:
總結如下:DataFrame與DataFrame之間的運算,由於DataFrame中的每一元素都由其行列索引唯一確定,也就是說DataFrame中的每一元素都有一個(行索引,列索引)構成的坐標 。因此對於不同的DataFrame,只用索引匹配上的數據,對應元素相加,對於沒有匹配上的數據,返回的是NaN值 。