DataFrame算术
实际上,通过 + - * / // ** 等符号可以直接对DataFrame与DataFrame之间或者DataFrame以及Series之间进行运算。但秉承的原则就是对应索引运算,存在索引不同时,返回结果为索引对的并集。
但是实际操作会发现,当存在索引不同时,返回的值自动填充NaN。
DataFrame的运算
import pandas as pd
import numpy as np
df1 = pd.DataFrame(np.ones((2,2)),columns=list("ab"))
df2 = pd.DataFrame(np.ones((3,3)),columns=list("abc"))
print(df1) # 2*2
print(df2) # 3*3
# df1 与 df2 形状完全不一致 是否可以进行运算?
df1 + df2 # 未报错。并集:索引相同部分运算,缺失部分填充为np.nan
"""
DF 与 Series
"""
# 结构一致
s = df2.iloc[0,:] # (3,) 与 (3,3)
print(s)
print(df2)
df2 + s # 进行0轴广播
# 结构完全不同
s2 = pd.Series(np.arange(15,20)) # (5,) (3,3)
print(s2)
print(df2)
s2 + df2 # 并集:全部填充NaN
使用填充值的算术方法
方法 | 描述 |
---|---|
add | 加法(+) |
sub | 减法(-) |
div | 除法(/) |
floordiv | 整除(//) |
mul | 乘法(*) |
pow | 幂次方(**) |
算术方法
df1.add(df2,fill_value=2) # fill_value是填充再有缺失值的数组,也就是说 2.0+1.0=3.0
df2.add(s)
df2.add(s2)
注意