python中对表格数据进行操作时,经常会使用函数对数据列进行操作,可以借助apply(),applymap(),map()来应用函数。通常自定义函数(def)或匿函数(lambda)或直接函数式。
先创建一个DataFrame,后续对此表进行操作
dates = pd.date_range('today',periods=6) # 定义时间序列作为 index
num_arr = np.random.randn(6,4) # 传入 numpy 随机数组
columns = ['A','B','C','D'] # 将列表作为列名
df = pd.DataFrame(num_arr, index = dates, columns = columns)
df
apply
- 当我们对表格数据按行或按列操作时用apply():
函数表达式: df.apply(func, axis=0, raw=False, result_type=None, args=(), **kwds)
func:此参数即为函数,在此处输入需要调用的函数
axis:对行或列进行操作,默认为0,对列进行操作
df.apply(lambda x:x.max())
df.apply(lambda x:x.max(),axis = 1)
applymap
- applymap:对表格所有数据不论行列,对每一个原始进行操作
函数表达式: df.applymap(func, na_action: 'Optional[str]' = None)
df.applymap(lambda x:x-1)
map
- 当我们对Series的每一个数据进行操作时用map
df.A.map(lambda x:x-1)
我似乎察觉不到map比起series的特别之处,似乎功能都能通过apply实现,apply也可以应用于Series上
只在简单应用时使用
总
总结:要对数据进行应用函数时,先看数据结构是DataFrame还是Series,Seriesj结构直接用map(),DataFrame结构的话再看是要按行还是按列进行操作来选择对应的函数即可