📜  Pandas apply()

📅  最后修改于: 2020-10-29 01:45:35             🧑  作者: Mango

Pandas DataFrame.apply()

Pandas apply()函数允许用户传递一个函数并将其应用于Pandas系列的每个单个值。此函数提高了Pandas 库的功能,因为它有助于根据所需条件隔离数据。这样它就可以有效地用于数据科学和机器学习。

要传递给函数的对象是Series对象,其索引是DataFrame的索引(即axis = 0)或DataFrame的列(即axis = 1)。默认情况下,result_type = None,并且最终返回类型是从应用函数的返回类型推断出来的。否则,它取决于result_type参数。

句法:

DataFrame.apply(func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, args=(), **kwds)

参数:

  • func:该函数将应用于每列或每一行。
  • axis: {0或’index’,1或’columns’},默认值0这是应用该函数的轴。它可以有两个值:
    • 0或’index’:将函数应用于每个列。
    • 1或“列”:将函数应用于每一行。
  • 广播:这是一个可选参数,返回布尔值。仅与聚合函数有关:False或None:它返回一个Series,其长度将是基于axis参数的索引长度或列数。正确:结果将广播到框架的原始形状;原始索引和列将保留。
  • raw:布尔值,默认值False False:它将每一行或每一列作为Series传递给函数。 True:传递的函数将接收ndarray对象。如果您要应用NumPy缩减函数,它将获得更好的性能。
  • reduce: bool或无,默认值无。它将尝试应用减少过程。如果DataFrame为空,则应用将使用reduce来确定结果应为Series还是DataFrame。默认情况下, reduce = None ,将通过在空的Series上调用func来猜测应用的返回值(注意:在猜测时,func引发的所有异常都将被忽略)。如果reduce = True ,将始终返回Series,而reduce = False ,将始终返回DataFrame。
  • result_type: {‘expand’,’reduce’,’broadcast’,None},默认值None这些仅在axis = 1(列)时起作用: ‘expand’:它定义了将变成列的类似列表的结果。 ‘reduce’:与’ expand ‘相反。如果可能,它返回一个Series而不是扩展类似列表的结果。 “广播”:它将结果广播到DataFrame的原始形状,原始索引和列中。默认值None取决于所应用函数的返回值,即,作为一系列结果返回的类似列表的结果。如果apply返回一个Series,它将扩展到列。
  • args:这是一个位置参数,除了数组/系列外,还将传递给func
  • ** kwds:这是一个可选的关键字参数,用于将关键字参数传递给func。

返回值:

它返回沿DataFrame的给定轴应用func的结果。

例:

info = pd.DataFrame([[2, 7]] * 4, columns=['P', 'Q'])
info.apply(np.sqrt)
info.apply(np.sum, axis=0)
info.apply(np.sum, axis=1)
info.apply(lambda x: [1, 2], axis=1)
info.apply(lambda x: [1, 2], axis=1, result_type='expand')
info.apply(lambda x: pd.Series([1, 2], index=['foo', 'bar']), axis=1)
info.apply(lambda x: [1, 2], axis=1, result_type='broadcast')
info

输出量

     A     B
0    2     7
1    2     7
2    2     7
3    2     7