Python pandas.DataFrame.sub函数方法的使用

Pandas是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。Pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。本文主要介绍一下Pandas中pandas.DataFrame.sub方法的使用。

DataFrame.sub(other, axis='columns', level=None, fill_value=None)     [source]

获取DataFrame和其他元素的减法(二进制运算符sub)。

与等效,但支持用fill_value替换输入之一中的丢失数据。rsub是反向版本。dataframe - other

在灵活的包装器(add,sub,mul,div,mod,pow)中使用算术运算符:+,-,*,/,//,%,**

参数:

other scalar, sequence, Series, 或 DataFrame

任何单个或多个元素的数据结构,或类列表的对象。

axis {0 ‘index’, 1‘columns’}

是按索引(0或' index ')还是按列(1' columns ')进行比较。

对于Series输入,轴匹配Series索引。

level int label

跨级别广播,匹配通过的多索引级别上的索引值。

fill_value :floatNone, 默认为 None

在计算之前,用这个值填充现有的NaN值,

以及成功的DataFrame对齐所需的任何新元素。

如果两个对应的DataFrame位置中的数据丢失,

则结果将丢失。

返回值:

DataFrame

算术运算的结果。

Notes

不匹配的索引将合并在一起。

例子

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

将具有不同形状的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

推荐阅读
cjavapy编程之路首页