1、DataFrame算术运算
加:add 或 +
减:sub 或 -
2、DataFrame与标量之间的运算(这个才是最重要的)
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、DataFrame与DataFrame之间的运算
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值 。