前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何让pandas根据指定列的指进行partition

如何让pandas根据指定列的指进行partition

作者头像
千灵域
发布2022-06-17 12:33:44
2.7K0
发布2022-06-17 12:33:44
举报
文章被收录于专栏:challenge filter

问题描述

我拿到了一个维基百科的列表,其数据如下:

datehour

title

views

2015-10-17 13:00:00 UTC

Wikipedia:Text_of_Creative_Commons_Attribution-ShareAlike_3.0_Unported_License

2

2015-06-01 14:00:00 UTC

Dulce_Mar铆a

10

2015-06-01 21:00:00 UTC

Dulce_Mar铆a

25

2015-06-01 06:00:00 UTC

Dulce_Mar铆a

18

2015-08-30 12:00:00 UTC

Portal:Current_events

116

UTF-8的问题暂且不谈,现在需要将其作为csv文件读入内存中,并且按照title分成不同的datehour->views表,并按照datehour排序。将2015~2020的数据按照同样的操作进行处理,并将它们拼接成一张大表,最后将每一个title对应的表导出到csv,title写入到index.txt中。

##解决方案

朴素想法

最朴素的想法就是遍历一遍原表的所有行,构建一个字典,字典的每个key是title,value是两个list。不断将原有数据放入其中,然后到时候直接遍历keys,根据两个list构建pd,排序后导出。

更python的做法

朴素想法应该是够用的,但是不美观,不够pythonic,看着很别扭。于是我搜索了How to partition DataFrame by column value in pandas?

boolean index

stackoverflow里有人提问如何将离散数据进行二分类,把小于和大于某个值的数据分到两个DataFrame中。直接用df1 = df[df["Sales"]>=s]这样的语句就可以完成。 但是这在我们的场景上并不太适用。当然,可以提前遍历一遍把title做成集合再循环遍历,不过这也不是很pythonic。

groupby

同样是上面那个问题,有人提到可以使用groupby方法。groupby听着就很满足我的需求,它让我想起了SQL里面的同名功能。

  • df.groupby('ColumnName').groups可以显示所有的列中的元素。
  • df.groupby('ColumnName')可以进行遍历,结果是一个(name,subDF)的二元组,name为分组的元素名称,subDF为分组后的DataFrame
  • df.groupby('ColumnName')产生的对象执行get_group(keyvalue)可以选择一个组

此外还有聚合、转换、过滤等操作,不赘述。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-11-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 问题描述
    • 朴素想法
      • 更python的做法
        • boolean index
        • groupby
    相关产品与服务
    文件存储
    文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档