DataFrame的这些操作和Series很相似,这里简单介绍一下。
一,应用
apply()函数应用于轴级别,applymap应用于元素级别:
DataFrame.apply(self, func, axis=0, raw=False, result_type=None, args=(), **kwds)
DataFrame.applymap(self, func)
定义一个函数fun,使用apply()函数把fun应用到由DataFrame对象的列构成的一维数组上,通常fun函数是由聚合函数构成的。
f=lambda x: x.max()-x.min df.apply(f)
定义一个函数foo,使用applymap()函数把函数foo应用于DataFrame对象的各个元素上,
foo=lambda x: '%.2f' % x df.applymap(foo)
转换数据,调用函数对循环对数据元素进行处理:
DataFrame.transform(self, func, axis=0, *args, **kwargs)
二,分组和聚合
groupby用于对数据分组,分组之后可以直接调用聚合函数求值;agg()函数把分组和调用聚合函数集成到一个函数来实现:
DataFrame.groupby(self, by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, observed=False, **kwargs)
DataFrame.agg(self, func, axis=0, *args, **kwargs)
三,窗口
rolling()是指按照窗口滚动求值,expanding()是指依次递增1,计算累加;ewm指的是指数加权滚动平均:
DataFrame.rolling(self, window, min_periods=None, center=False, win_type=None, on=None, axis=0, closed=None) DataFrame.expanding(self, min_periods=1, center=False, axis=0) DataFrame.ewm(self, com=None, span=None, halflife=None, alpha=None, min_periods=0, adjust=True, ignore_na=False, axis=0)
四,追加数据行
向数据框的末尾追加数据行
DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=None)
五,自然连接
两个数据框按照on条件进行连接,或按照索引,或按照同名的字段进行连接,按照等值条件进行匹配:
DataFrame.join(self, other, on=None, how='left', lsuffix='', rsuffix='', sort=False)
参数注释:
- on:如果设置为None,那么按照行索引来匹配;如果设置为列值,那么两个DataFrame中按照on指定的列进行匹配
- how:连接的类型,{‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘left’
- lsuffix:左表同名字段的前缀
- rsuffix:右表同名字段的前缀
六,合并
类似于关系型数据库的连接操作,和join函数的功能相同,按照等值条件进行匹配,但是用法比join函数更灵活:
DataFrame.merge(self, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)
参数注释:
- right:右表
- how:{‘left’, ‘right’, ‘outer’, ‘inner’}, default ‘inner’
- on:连接的条件,要求按照同名字段进行匹配
- left_on、right_on:分别指定左表和右表的来连接字段,字段的顺序是有意义的
- left_index、right_index:分别指定左表和右表的索引,按照索引来匹配
- suffixes:元组(str,str),分别用于指定左表和右表同名字段的前缀
- indicator:增加指示器,如果设置为True,增加一列”_merge“
- validate:检查merge的类型(“one_to_one” or “1:1”,“one_to_many” or “1:m”,“many_to_one” or “m:1”和“many_to_many” or “m:m”)
参考文档: