当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.apply用法及代码示例


用法:

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

沿 DataFrame 的轴应用函数。

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

参数

func函数

应用于每一列或每一行的函数。

axis{0 或 ‘index’,1 或 ‘columns’},默认 0

沿其应用函数的轴:

  • 0 或‘index’:将函数应用于每一列。

  • 1 或‘columns’:将函数应用于每一行。

raw布尔值,默认为 False

确定行或列是否作为 Series 或 ndarray 对象传递:

  • False :将每一行或每一列作为系列传递给函数。

  • True :传递的函数将接收 ndarray 对象。如果您只是应用 NumPy 缩减函数,这将获得更好的性能。

result_type{‘expand’, ‘reduce’, ‘broadcast’, 无},默认无

这些仅在axis=1(列)时起作用:

  • ‘expand’:list-like 结果将转换为列。

  • ‘reduce’:如果可能,返回一个系列,而不是扩展 list-like 结果。这与‘expand’ 正好相反。

  • ‘broadcast’:results 会广播到 DataFrame 的原始形状,保留原始索引和列。

默认行为(无)取决于应用函数的返回值:list-like 结果将作为一系列返回。但是,如果应用函数返回一个系列,这些将扩展为列。

args元组

除了数组/系列之外,要传递给 func 的位置参数。

**kwargs

附加关键字参数作为关键字参数传递给 func

返回

Series或DataFrame

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

注意

改变传递对象的函数可能会产生意外行为或错误,因此不受支持。有关更多详细信息,请参阅使用用户定义函数 (UDF) 方法进行变异。

例子

>>> df = pd.DataFrame([[4, 9]] * 3, columns=['A', 'B'])
>>> df
   A  B
0  4  9
1  4  9
2  4  9

使用 numpy 通用函数(在这种情况下与 np.sqrt(df) 相同):

>>> df.apply(np.sqrt)
     A    B
0  2.0  3.0
1  2.0  3.0
2  2.0  3.0

在任一轴上使用归约函数

>>> df.apply(np.sum, axis=0)
A    12
B    27
dtype:int64
>>> df.apply(np.sum, axis=1)
0    13
1    13
2    13
dtype:int64

返回 list-like 将产生一个系列

>>> df.apply(lambda x:[1, 2], axis=1)
0    [1, 2]
1    [1, 2]
2    [1, 2]
dtype:object

传递 result_type='expand' 会将 list-like 结果扩展到 Dataframe 的列

>>> df.apply(lambda x:[1, 2], axis=1, result_type='expand')
   0  1
0  1  2
1  1  2
2  1  2

在函数内返回 Series 类似于传递 result_type='expand' 。生成的列名称将是系列索引。

>>> df.apply(lambda x:pd.Series([1, 2], index=['foo', 'bar']), axis=1)
   foo  bar
0    1    2
1    1    2
2    1    2

传递result_type='broadcast'将确保相同的形状结果,无论是函数返回list-like还是标量,并沿轴广播。生成的列名称将是原始名称。

>>> df.apply(lambda x:[1, 2], axis=1, result_type='broadcast')
   A  B
0  1  2
1  1  2
2  1  2

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.apply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。