用法:
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
相关用法
- Python pandas.DataFrame.applymap用法及代码示例
- Python pandas.DataFrame.append用法及代码示例
- Python pandas.DataFrame.add_prefix用法及代码示例
- Python pandas.DataFrame.assign用法及代码示例
- Python pandas.DataFrame.add用法及代码示例
- Python pandas.DataFrame.all用法及代码示例
- Python pandas.DataFrame.at_time用法及代码示例
- Python pandas.DataFrame.at用法及代码示例
- Python pandas.DataFrame.agg用法及代码示例
- Python pandas.DataFrame.asfreq用法及代码示例
- Python pandas.DataFrame.add_suffix用法及代码示例
- Python pandas.DataFrame.asof用法及代码示例
- Python pandas.DataFrame.astype用法及代码示例
- Python pandas.DataFrame.aggregate用法及代码示例
- Python pandas.DataFrame.axes用法及代码示例
- Python pandas.DataFrame.abs用法及代码示例
- Python pandas.DataFrame.any用法及代码示例
- Python pandas.DataFrame.align用法及代码示例
- Python pandas.DataFrame.ewm用法及代码示例
- Python pandas.DataFrame.dot用法及代码示例
注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.apply。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。