pandas中apply()函数的使用
Pandas中apply()使用(仅用于记录方便以后查看)
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.apply.html
1.DataFrame.apply(func, axis=0, broadcast=False, raw=False, reduce=None, args=(), **kwds)
该函数最有用的是第一个参数,这个参数是函数,相当于C/C++的函数指针。
这个函数需要自己实现,函数的传入参数根据axis来定,比如axis = 1,
就会把一行数据作为Series的数据结构传入给自己实现的函数中,
我们在函数中实现对Series不同属性之间的计算,返回一个结果,
则apply函数会自动遍历每一行DataFrame的数据,最后将所有结果组合成一个Series数据结构并返回。
原文链接:https://blog.csdn.net/qq_19528953/article/details/79348929、
2. Series.apply( func , convert_dtype = True , args = () , ** kwargs )(series没有axis参数)
对 Series 的值调用函数。
可以是 ufunc(适用于整个系列的 NumPy 函数)或仅适用于单个值的 Python 函数。
参数
func函数
要应用的 Python 函数或 NumPy ufunc。
convert_dtype bool,默认为 True
尝试为元素函数结果找到更好的 dtype。如果为 False,则保留为 dtype=object。请注意,dtype 始终保留用于某些扩展数组 dtype,例如 Categorical。
args:tuple
在系列值之后传递给 func 的位置参数。
**kwargs
传递给 func 的其他关键字参数。
reyurn:
seties或DataFrame
如果 func 返回一个 Series 对象,则结果将是一个 DataFrame。
-----------------------
其他函数
Series.map
用于元素操作。
Series.agg
仅执行聚合类型操作。
Series.transform
只执行转换类型操作。
针对series数据:
df['Extra'] = df.Nationality(字段名).apply(lambda n, extra : extra if n == '汉' else 0, args=(5,))
针对DataFrame数据:
1.对列进行操作(## 是把整个列作为操作单位)
下面的示例对 x 和 y 列进行平方运算:
df.apply(lambda x : np.square(x) if x.name in ['x', 'y'] else x)
x y z
a 1 4 3
b 16 25 6
c 49 64 9
2.对行进行操作(##把一行不同属性之间的值作为操作单位)
下面的示例对第一行 (a 标签所在行)进行平方运算:
df.apply(lambda x : np.square(x) if x.name == 'a' else x, axis=1)
默认情况下 axis=0 表示按列,axis=1 表示按行。
原文链接:https://blog.csdn.net/stone0823/article/details/100008619
备注:apply()可用于两列日期的计算