快捷搜索:  汽车  科技

pandas解析工作表方法(Excel的分列功能很强大)

pandas解析工作表方法(Excel的分列功能很强大)pandas 中的文本切片与 Python 中的切片一样,因此我们可以这样处理: 有些系统有时候不会太人性化,比如,id 中的日期的起始位置是不固定的: Excel 上可以用分列功能: pandas 中,我们不需要用 split ,而是直接用切片提取: df.str[4:12] 相当于 df.str.slice(4 12)

pandas解析工作表方法(Excel的分列功能很强大)(1)

转发本文并私信我"Python",即可获得Python资料以及更多系列文章(持续更新的)

经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas

系列相关:
  • 懂Excel就能轻松入门Python数据分析包pandas(七):分列
前言

本系列有一篇文章是关于 pandas 实现 Excel 中的分列功能,后来有小伙伴问我,怎么实现 Excel 中固定列宽分列功能。这次就看看几个奇葩的数据案例。


案例1

某公司系统,有一 id 列,其中一部分是表示用户出生日期:

pandas解析工作表方法(Excel的分列功能很强大)(2)

  • 怎么可以从中把日期值提取出来呢

Excel 上可以用分列功能:

pandas解析工作表方法(Excel的分列功能很强大)(3)

pandas解析工作表方法(Excel的分列功能很强大)(4)

  • 结果会把数据分成3列

pandas解析工作表方法(Excel的分列功能很强大)(5)

pandas 中,我们不需要用 split ,而是直接用切片提取:

pandas解析工作表方法(Excel的分列功能很强大)(6)

  • df.str[4:12],意思是,截取从第5个至第13个(不包含第13个)之间的内容

df.str[4:12] 相当于 df.str.slice(4 12)


案例2

有些系统有时候不会太人性化,比如,id 中的日期的起始位置是不固定的:

pandas解析工作表方法(Excel的分列功能很强大)(7)

  • 日期起始位置不固定,但如果从反向来说是固定的

pandas 中的文本切片与 Python 中的切片一样,因此我们可以这样处理:

pandas解析工作表方法(Excel的分列功能很强大)(8)

  • 用负数表示从反方向计算截取范围

pandas解析工作表方法(Excel的分列功能很强大)(9)

案例3

这是一个"抬杠案例":

pandas解析工作表方法(Excel的分列功能很强大)(10)

  • 开始位置不固定,并且,日期之间还有不固定的分隔符号

我们当然可以用正则表达式提取,这次我选用一种特别的方式完成:

pandas解析工作表方法(Excel的分列功能很强大)(11)

  • 注意,我们使用了 itertools.compress ,要导入该模块。 import itertools

相信很多人不理解其中的原理,特别是其中的 sed 构造,看看下面的对应图:

pandas解析工作表方法(Excel的分列功能很强大)(12)

  • itertools.compress() ,他的作用就是按照一个 bool 列表,把其中的 True 对应另外一个序列同位置上的元素给筛选出来

你 get 到了吗?


如果希望从零开始学习 pandas ,那么可以看看我的 pandas 专栏,现在已经到达第二阶段最后一个知识点——日期时间,学完这些你就能解决诸如走势波动的超高难度数据需求,快来学习吧。

总结
  • 分列只是提取内容的一种方式,别一遇到分列,则只考虑 str.split
  • str.slice 或 str[] ,可以像 Python 切片一样做处理
  • 用好 itertools.compress,可以进行有规则并且连续内容的提取

需要源码的小伙伴请转发本文并私信我"python"

猜您喜欢: