pandas apply 应用套路详解
在 DataFrame
中应用 apply
函数很常见,你使用的多吗?
在应用时,传递给函数的对象是 Series
对象,其索引是 DataFrame
的index (axis=0)
或者 DataFrame
的 columns (axis=1)
。
基本语法:
基本参数
func : function
应用到每行或每列的函数。
axis :{0 or 'index', 1 or 'columns'}, default 0
函数应用所沿着的轴。
0 or
index
: 在每一列上应用函数。1 or
columns
: 在每一行上应用函数。
raw : bool, default False
确定行或列以 Series 还是 ndarray 对象传递。
False
: 将每一行或每一列作为一个 Series 传递给函数。
True
: 传递的函数将接收ndarray
对象。如果你只是应用一个NumPy
还原函数,这将获得更好的性能。
result_type : {'expand', 'reduce', 'broadcast', None}, default None
这些只有在
axis=1
(列)时才会发挥作用。
expand
: 列表式的结果将被转化为列。
reduce
: 如果可能的话,返回一个 Series,而不是展开类似列表的结果。这与expand
相反。
broadcast
: 结果将被广播到DataFrame
的原始形状,原始索引和列将被保留。默认行为(None)取决于应用函数的返回值:类似列表的结果将作为这些结果的
Series
返回。但是,如果应用函数返回一个Series
,这些结果将被扩展为列。
args : tuple
除了数组/序列之外,要传递给函数的位置参数。
**kwds
作为关键字参数传递给函数的附加关键字参数。
应用示例
应用 numpy
的通用函数:
在任一轴上使用还原函数:
返回一个类似列表的结果是一个 Series
。
传递 result_type='expand'
将把类似列表的结果扩展到 Dataframe 的列中
在函数中返回一个 Series
类似于传递 result_type='expand'
。结果的列名将是 Series 的索引。
传递 result_type='broadcast'
将确保函数返回与原始 DataFrame
有相同的形状结果,无论是列表式还是标量式,并且沿轴的方向广播。结果的列名将是原始的列名。
自定义函数应用框架
基本应用
某列应用函数
某列应用函数并新增列
使用列表推导式应用自定义函数
-- END
--
版权声明: 本文为 InfoQ 作者【披头】的原创文章。
原文链接:【http://xie.infoq.cn/article/ba6789e42744e4b49ddd40aaa】。文章转载请联系作者。
评论