DataFrame(6):DataFrame運算——算術運算


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值 。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM