标签:ref 截断 ble wds 正则表达 学习 style spec monkey
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)
追加是增加数据框的数据,截断是把数据从数据框中删除。
1,追加
向数据框的末尾追加数据行:
DataFrame.append(self, other, ignore_index=False, verify_integrity=False, sort=None)
也就是把一个结构相同的DataFrame追加到另一个DataFrame的后面,把两个DataFrame合并为一个。
2,截断
可以按照行索引来截断数据,也可以按照列索引来截断数据:
DataFrame.truncate(self, before=None, after=None, axis=None, copy=True)
参数注释:
数据框的连接操作类似于关系型数据库中的JOIN操作。
1,自然连接
两个数据框按照on条件进行连接,或按照索引,或按照同名的字段进行连接,按照等值条件进行匹配:
DataFrame.join(self, other, on=None, how=‘left‘, lsuffix=‘‘, rsuffix=‘‘, sort=False)
参数注释:
2,合并
类似于关系型数据库的连接操作,和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)
参数注释:
重复值是指同一列中重复出现的值。
1,检测重复值
函数duplicated用于检测DataFrame的列中是否存在重复值,
DataFrame.duplicated(self, subset=None, keep=‘first‘)
subset:列标签,或列标签序列
keep:有效值是‘first’, ‘last’, False, default ‘first’
2,删除重复值
drop_duplicates()删除包含重复值的数据行
DataFrame.drop_duplicates(self, subset=None, keep=‘first‘, inplace=False)
subset:列标签,或列标签序列
keep:有效值是‘first’, ‘last’, False, default ‘first’
重索引的目的是使原始索引按照新的索引进行排序
DataFrame.reindex(self, labels=None, index=None, columns=None, axis=None, method=None, copy=True, level=None, fill_value=nan, limit=None, tolerance=None)
参数注释:
重命名轴的标签和轴的name属性
1,重名轴的标签
重命名轴的标签,传递的参数是dict-like对象,key和value是1-to-1的,key表示原始标签,value表示新标签:
DataFrame.rename(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False, level=None, errors=‘ignore‘)
参数注释:
2,重命名轴的name属性
轴有name属性,使用rename_axis()重命名轴的name属性:
DataFrame.rename_axis(self, mapper=None, index=None, columns=None, axis=None, copy=True, inplace=False)
参数注释:
mapper:通常情况下是标签纸,表示轴的新name
重置索引,默认使用整数索引代替原始索引:
DataFrame.reset_index(self, level=None, drop=False, inplace=False, col_level=0, col_fill=‘‘)
参数注释:
例如,创建多级的行索引和列索引,如下所示,行索引是2级别的,两个级别的名称分别是class和name;列索引也是2级的,列索引两个级别都是匿名的。
>>> index = pd.MultiIndex.from_tuples([(‘bird‘, ‘falcon‘), ... (‘bird‘, ‘parrot‘), ... (‘mammal‘, ‘lion‘), ... (‘mammal‘, ‘monkey‘)], ... names=[‘class‘, ‘name‘]) >>> columns = pd.MultiIndex.from_tuples([(‘speed‘, ‘max‘), ... (‘species‘, ‘type‘)]) >>> df = pd.DataFrame([(389.0, ‘fly‘), ... ( 24.0, ‘fly‘), ... ( 80.5, ‘run‘), ... (np.nan, ‘jump‘)], ... index=index, ... columns=columns) >>> df speed species max type class name bird falcon 389.0 fly parrot 24.0 fly mammal lion 80.5 run monkey NaN jump
把class级别的行索引转换为列,插入到列索引的级别1中:
>>> df.reset_index(level=‘class‘, drop=False, col_level=1) speed species class max type name falcon bird 389.0 fly parrot bird 24.0 fly lion mammal 80.5 run monkey mammal NaN jump
查看DataFrame的多级列,新插入的列‘Class‘在另一个level上是没有列名的,这可以通过设置col_fill参数来为另一个level上的列名赋值:
>>> df.reset_index(level=‘class‘, drop=False, col_level=1).columns MultiIndex([( ‘‘, ‘class‘), ( ‘speed‘, ‘max‘), (‘species‘, ‘type‘)], )
修改新加的列在其他level的列名:
>>> df.reset_index(level=‘class‘, col_level=1, col_fill=‘genus‘) genus speed species class max type name falcon bird 389.0 fly parrot bird 24.0 fly lion mammal 80.5 run monkey mammal NaN jump
设置轴的索引,可以使用set_index()函数把已有的列转换为行索引,也可以使用set_axis()函数替换掉已有的轴索引。
1,把已有的列转换为行索引
使用现有的列作为DataFrame的索引:
DataFrame.set_index(self, keys, drop=True, append=False, inplace=False, verify_integrity=False)
参数注释:
2,替换原始索引
把给定的轴的索引替换为新索引:
DataFrame.set_axis(self, labels, axis=0, inplace=None)
参数注释:
使用新的索引来替换原始的行索引:
>>> df = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]}) >>> df.set_axis([‘a‘, ‘b‘, ‘c‘], axis=‘index‘, inplace=False) A B a 1 4 b 2 5 c 3 6
选择是指通过轴索引来选择数据,而过滤是指按照轴标签(完全匹配、模糊匹配和正则匹配)来过滤数据。
1,选择
选择Top N行、尾部N行、或者从给定的位置处返回数据:
DataFrame.head(self, n=5) DataFrame.tail(self, n=5) DataFrame.take(self, indices, axis=0, is_copy=True, **kwargs)
举个例子,返回从行索引为0和3的数据行:
df.take([0, 3])
2,过滤
也可以使用正则表达式、模糊匹配等方式,从数据框的轴标签中匹配值,返回数据:
DataFrame.filter(self, items=None, like=None, regex=None, axis=None)
参数注释:
参考文档:
pandas 学习 第10篇:DataFrame 数据处理(应用、追加、截断、连接、合并、重复值、重索引、重命名、重置索引、设置轴索引、选择和过滤)
标签:ref 截断 ble wds 正则表达 学习 style spec monkey
原文地址:https://www.cnblogs.com/ljhdo/p/11592735.html