如何将数据转换为带有统计信息的特定格式?

如何将数据转换为带有统计信息的特定格式?

如何将数据转换为带有统计信息的特定格式

你遇到的问题是将类似以下形式的数据转换为新格式:

  1. data = [ ('连衣裙', '白色', 's', 1), ('连衣裙', '白色', 's', 1), ('连衣裙', '黑色', 'm', 1), ('裤子', '白色', 's', 1),]

登录后复制

目标格式需要统计相同标题下的颜色和尺码数量,并在最后一个字段中显示总数,并根据总数从高到低进行排序:

  1. result = [ ('连衣裙', '白色', 's', 2, 3), ('连衣裙', '白色', 'm', 1, 3), ('裤子', '白色', 's', 1, 1),]

登录后复制

解决方法如下:

使用counter来计算每个(标题, 颜色, 尺码)元组的数量:

  1. from collections import countercounter = counter(tuple(x[:-1]) for x in data)

登录后复制

  1. counter = { ('连衣裙', '白色', 's'): 2, ('连衣裙', '黑色', 'm'): 1, ('裤子', '白色', 's'): 1,}

登录后复制

计算每个标题的总数:

  1. title_counts = counter(x[0] for x in data)

登录后复制

  1. title_counts = { '连衣裙': 3, '裤子': 1,}

登录后复制

构建结果列表,包含每个元组、其数量以及对应的标题总数:

  1. result = [(key[0], key[1], key[2], count, title_counts[key[0]]) for key, count in counter.items()]

登录后复制

根据总数从高到低排序:

  1. result.sort(key=lambda x: (-x[4], x[0], x[1], x[2]))

登录后复制

最后,你会得到所需的输出:

  1. print(result)

登录后复制

  1. [('连衣裙', '白色', 'S', 2, 3), ('连衣裙', '黑色', 'M', 1, 3), ('裤子', '白色', 'S', 1, 1)]

登录后复制

以上就是如何将数据转换为带有统计信息的特定格式?的详细内容,更多请关注【创想鸟】其它相关文章!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

点点赞赏,手留余香

给TA打赏
共0人
还没有人赞赏,快来当第一个赞赏的人吧!
    编程技术

    Go语言中为什么函数闭包会返回相同的值?如何解决?

    2025-2-25 14:45:00

    编程技术

    如何使用Pandas高效计算当前行以上比当前行值大的个数?

    2025-2-25 14:45:19

    0 条回复 A文章作者 M管理员
    欢迎您,新朋友,感谢参与互动!
      暂无讨论,说说你的看法吧
    个人中心
    购物车
    优惠劵
    今日签到
    私信列表
    搜索