看过来
《pandas 教程》 持续更新中,提供建议、纠错、催更等加作者微信: gairuo123(备注:pandas教程)和关注公众号「盖若」ID: gairuo。跟作者学习,请进入 Python学习课程。欢迎关注作者出版的书籍:《深入浅出Pandas》 和 《Python之光》。
pandas 的 add()、sub()、mul()、div() 是当前的数据和其他元素的加减乘除方法。相当于 dataframe+other、dataframe-other、dataframe*other、dataframe/other
、,但支持用 fill_value 替换其中一个输入中缺失的数据。反向版本,radd()、rsub()、rmul()、rdiv()。
它们的语法是:
# 加法
DataFrame.add(other, axis='columns', level=None, fill_value=None)
# 减法
DataFrame.sub(other, axis='columns', level=None, fill_value=None)
# 乘法
DataFrame.mul(other, axis='columns', level=None, fill_value=None)
# 除法
DataFrame.div(other, axis='columns', level=None, fill_value=None)
在算术运算符的灵活包装器(add、sub、mul、div、floordiv、mod、pow)中:+、-、*、/、//、%、**
。
不匹配的索引标签将合并在一起。
注:
构造数据:
df = pd.DataFrame({'angles': [0, 3, 4],
'degrees': [360, 180, 360]},
index=['circle', 'triangle', 'rectangle'])
df
'''
angles degrees
circle 0 360
triangle 3 180
rectangle 4 360
'''
添加一个具有运算符版本的标量,返回相同的结果。
df + 1
'''
angles degrees
circle 1 361
triangle 4 181
rectangle 5 361
'''
df.add(1)
'''
angles degrees
circle 1 361
triangle 4 181
rectangle 5 361
'''
用逆版本除以常数。
df.div(10)
'''
angles degrees
circle 0.0 36.0
triangle 0.3 18.0
rectangle 0.4 36.0
'''
df.rdiv(10)
'''
angles degrees
circle inf 0.027778
triangle 3.333333 0.055556
rectangle 2.500000 0.027778
'''
用运算符版本减去列表和轴序列。
df - [1, 2]
'''
angles degrees
circle -1 358
triangle 2 178
rectangle 3 358
'''
df.sub([1, 2], axis='columns')
'''
angles degrees
circle -1 358
triangle 2 178
rectangle 3 358
'''
df.sub(pd.Series([1, 1, 1], index=['circle', 'triangle', 'rectangle']),
axis='index')
'''
angles degrees
circle -1 359
triangle 2 179
rectangle 3 359
'''
将字典乘以轴。
df.mul({'angles': 0, 'degrees': 2})
'''
angles degrees
circle 0 720
triangle 0 360
rectangle 0 720
'''
df.mul({'circle': 0, 'triangle': 2, 'rectangle': 3}, axis='index')
'''
angles degrees
circle 0 0
triangle 6 360
rectangle 12 1080
'''
将不同形状的DataFrame与运算符版本相乘。
other = pd.DataFrame({'angles': [0, 3, 4]},
index=['circle', 'triangle', 'rectangle'])
other
'''
angles
circle 0
triangle 3
rectangle 4
'''
df * other
'''
angles degrees
circle 0 NaN
triangle 9 NaN
rectangle 16 NaN
'''
df.mul(other, fill_value=0)
'''
angles degrees
circle 0 0.0
triangle 9 0.0
rectangle 16 0.0
'''
按级别除以MultiIndex。
df_multindex = pd.DataFrame({'angles': [0, 3, 4, 4, 5, 6],
'degrees': [360, 180, 360, 360, 540, 720]},
index=[['A', 'A', 'A', 'B', 'B', 'B'],
['circle', 'triangle', 'rectangle',
'square', 'pentagon', 'hexagon']])
df_multindex
'''
angles degrees
A circle 0 360
triangle 3 180
rectangle 4 360
B square 4 360
pentagon 5 540
hexagon 6 720
'''
df.div(df_multindex, level=1, fill_value=0)
'''
angles degrees
A circle NaN 1.0
triangle 1.0 1.0
rectangle 1.0 1.0
B square 0.0 0.0
pentagon 0.0 0.0
hexagon 0.0 0.0
'''
更新时间:2024-08-09 20:15:26 标签:pandas add sub mul div