假设已知列的分组关系,并希望根据分组计算列的总计:
123456
mapping = {'a':'red', 'b':'red', 'c':'blue',...'d':'blue', 'e':'red', 'f':'orange'} mapping{'a': 'red', 'c': 'blue', 'b': 'red', 'e': 'red', 'd': 'blue', 'f': 'orange'} type(mapping)type 'dict'
现在,只需将这个字典传给groupby即可:
12345678910
by_column = people.groupby(mapping, axis=1) by_columnpandas.core.groupby.DataFrameGroupBy object at 0x066150F0 by_column.sum()blueredJoe-1.278973 -0.006092Steve-0.8851021.089908Wes0.7317211.732554Jim1.3954654.329606Travis -0.427287 -5.251905
Series也有同样的功能 , 它可以被看做一个固定大小的映射 。对于上面那个例子 , 如果用Series作为分组键,则pandas会检查Series以确保其索引跟分组轴是对齐的:
12345678910111213141516
map_series = pd.Series(mapping) map_seriesaredbredcbluedblueeredforangedtype: object people.groupby(map_series, axis=1).count()blueredJoe23Steve23Wes12Jim23Travis23
7、通过函数进行分组
相较于字典或Series,Python函数在定义分组映射关系时可以更有创意且更为抽象 。任何被当做分组键的函数都会在各个索引值上被调用一次,其返回值就会被用作分组名称 。
具体点说,以DataFrame为例,其索引值为人的名字 。假设你希望根据人名的长度进行分组,虽然可以求取一个字符串长度数组,但其实仅仅传入len函数即可:
12345
people.groupby(len).sum()abcde32.2722163.0619380.879741 -0.0315290.72191450.9983350.4942290.337624 -1.222726 -0.4026556 -2.013278 -2.0103040.117713 -0.545000 -1.228323
将函数跟数组、列表、字典、Series混合使用也不是问题,因为任何东西最终都会被转换为数组:
1234567
key_list = ['one', 'one', 'one', 'two', 'two'] people.groupby([len, key_list]).min()abcde3 one0.306336 -0.1394310.210028 -1.489001 -0.172998two0.5505513.2013690.6697130.7257510.5776875 one0.9983350.4942290.337624 -1.222726 -0.4026556 two -2.013278 -2.0103040.117713 -0.545000 -1.228323
8、根据索引级别分组
层次化索引数据集最方便的地方在于它能够根据索引级别进行聚合 。要实现该目的 , 通过level关键字传入级别编号或名称即可:
12345678910111213141516171819
columns = pd.MultiIndex.from_arrays([['US', 'US', 'US', 'JP', 'JP'],...[1, 3, 5, 1, 3]], names=['cty', 'tenor']) columnsMultiIndex[US1,3,5, JP1,3] hier_df = pd.DataFrame(np.random.randn(4, 5), columns=columns) hier_dfctyUSJPtenor135130-0.1666000.248159 -0.082408 -0.710841 -0.0971311-1.7622700.6874581.235950 -1.4075131.30405521.0899440.258175 -0.749688 -0.8519481.6877683-0.378311 -0.0782680.247147 -0.0188290.744540 hier_df.groupby(level='cty', axis=1).count()ctyJPUS023123223323
python split函数用法python split函数的用法是什么呢?一起来看下吧:
python中有split()和os.path.split()两个函数,具体作用如下:
1、split():拆分字符串 。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表(list)
语法:str.split(str='''',num=string.count(str))[n]
参数说明:
(1)str:表示为分隔符,默认为空格 , 但是不能为空('') 。若字符串中没有分隔符,则把整个字符串作为列表的一个元素
(2)num:表示分割次数 。如果存在参数num,则仅分割成num+1个子字符串,并且每一个子字符串可以赋给新的变量
(3)[n]:表示选取第n个分片
注意:当使用空格作为分隔符时,对于中间为空的项会自动忽略
2、os.path.split():按照路径将文件名和路径分割开 。
语法:os.path.split('PATH')
参数说明:
(1)PATH指一个文件的全路径作为参数
(2)如果给出的是一个目录和文件名,则输出路径和文件名
推荐阅读
- 像素射击游戏排位视频教程,像素射击玩法
- 截止2017年html5游戏款,html 5游戏
- 地统计学gis,地统计学在地理学中的应用
- 视频中加小程序,视频中加小程序怎么弄
- java分数程序代码 java分数求和代码
- 可爱小视频是什么软件,可爱短视频
- python+文件写入时换行,python写入文件不换行
- 初级游戏开发助理,急招游戏设计开发助理
- c语言函数的奇偶性 c语言运用函数判断奇偶性