python中实现分组。

本文介绍了一种使用Python对二维列表进行排序和分组的方法。通过`operator.itemgetter`和`itertools.groupby`函数,可以有效地根据指定列对列表进行排序,并进一步实现分组操作。这种技术在处理大量数据时非常有用。

导入包:

from operator import itemgetter
from itertools import groupby

 

rlst是一个二维list 如:[["a1",20,"b1","c1"],["a1",21,"b2","c2"].....]

现在需要按照其中的第0,2列分组,

 

rlst.sort(key=itemgetter(0,2))#先排序,如只按某一列排序,(0)即可。
grrlst=groupby(rlst,itemgetter(0,2))#分组。
for i,item in grrlst:#其中i是分组的Id如(a1,b1),item是当前组的成员形式[[a1",20,"b1","c1"],......]
    for jtem in item:#输出当前组
         print jtem

在数据处理中,分组累加求和是一个常见的操作,尤其是在进行统计分析和数据清洗时。为了更深入地理解如何运用Pandas库来实现这一功能,建议阅读《Python分组求和与累加示例:数据处理与统计》一文。该资源详细讲解了Pandas在数据处理中的应用,特别适合于需要掌握分组操作和累加求和方法的开发者。 参考资源链接:[Python分组求和与累加示例:数据处理与统计](https://wenku.youkuaiyun.com/doc/645cdbc095996c03ac3fa413) 具体来说,我们可以利用Pandas库中的`groupby()`函数来进行分组,并通过`cumsum()`函数实现累加求和。例如,假设我们有一个DataFrame `df1`,其中包含两列数据:'name'和'num'。我们希望根据'name'列的值分组,并对'num'列进行累加求和,接着计算每个内'num'的平均比例。 首先,我们可以创建一个累加求和的DataFrame `df2`: ```python import pandas as pd data = ['abc', 'abc', 'abc', 'asc', 'ase', 'ase', 'ase'] num = [1, 2, 2, 1, 2, 1, 2] df1 = pd.DataFrame({'name': data, 'num': num}) df2 = df1.groupby('name', as_index=False)['num'].cumsum() df2 = df2.rename(columns={'num': 'cumsum_num'}) ``` 接下来,我们计算每个名称下的'num'的总和,并与累加求和的结果进行合并: ```python df3 = df1.groupby('name', as_index=False)['num'].sum().rename(columns={'num': 'total_num'}) df2 = df2.merge(df3, on='name', how='left') ``` 然后,我们计算每个分组内'num'的平均比例: ```python df2['ratio'] = df2['cumsum_num'] / df2['total_num'] ``` 最后,我们可以整理列名,以确保结果的可读性: ```python df2.columns = ['name', 'cumsum_num', 'total_num', 'ratio'] ``` 通过以上步骤,我们不仅完成了分组累加求和的操作,还计算出了每个分组中'num'的平均比例。这对于进一步的数据分析和报告生成是非常有用的。如果你希望更全面地掌握Pandas库在数据分析中的应用,包括更多的函数和技巧,推荐你继续阅读《Python分组求和与累加示例:数据处理与统计》,该资料将帮助你构建坚实的知识基础。 参考资源链接:[Python分组求和与累加示例:数据处理与统计](https://wenku.youkuaiyun.com/doc/645cdbc095996c03ac3fa413)
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值