我是靠谱客的博主 鲤鱼洋葱,最近开发中收集的这篇文章主要介绍pandas的一些知识点记录。,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

主要是前两天公司同事希望我帮忙弄一个从Excel表格中筛出手机号。所以就由此出现的一些问题处理,写的不好还望各位python大佬指点一二:

1.选择DataFrame对象中的某列:

tel = df.iloc[:, col_index]

使用切片的方式就可以选择相对应的列了。 大概说明下。这里前面的':'是切处所有的行,后面一个参数就是列的下标

具体可看官方文档:

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html#pandas.DataFrame.iloc

那反过来讲 df.iloc[row,:]就是选取指定行咯。 意思是一样的。

对了 返回的是一个Series对象。

2. 过滤Series对象中的数据:

使用Series.str.extract()函数就可以解决。

phone = tel.str.extract(r'(^d{11}$)',  expand=False)

通过正则表达式就能够得到每行数据是否是手机号了(这里不检查手机号前三位是否真实有效)。后面的expand表示返回的是Series对象还是DataFrame对象

返回的对象并不会将不符合正则表达式的行去掉。而是替换成NaN。这里要注意下。

该函数的官方文档说明:

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.str.extract.html#pandas.Series.str.extract

3.去掉讨人厌的NaN

在前面第二点的时候说到。Series.str.extract()返回的Series对象会将不符合规则的字段值改成NaN返回。但是,我这里的需求是要把这些不符合要求的数据删除掉。所以,我还需要另一个函数:

Series.dropna()

这货可以将Series对象中NaN删除 返回一个干净的Series对象。

具体操作就是这样:

phone = tel.str.extract(r'(^d{11}$)',  expand=False).dropna()

或者可以这样tel.str.extract(r'(^d{11}$)',  expand=False).dropna(inplace=True)

这表示就地处理,直接改变tel对象的数据。而不需要再另外返回新的对象。

当然,也可以指定列的下标来指定处理某列的NaN:

Series.dropna(axis=0, inplace = True)

官方文档:

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.dropna.html#pandas.Series.dropna

4. 到处到Excel表格

单独的Series对象也可以直接导出到Excel。 使用:

phone.to_excel(self.target_file,  header=False,  index=False)

表示去头去序号。 这个没啥太多的疑问,只需要看官方文档就知道怎么操作了

http://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.Series.to_excel.html#pandas.Series.to_excel

最后

以上就是鲤鱼洋葱为你收集整理的pandas的一些知识点记录。的全部内容,希望文章能够帮你解决pandas的一些知识点记录。所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(58)

评论列表共有 0 条评论

立即
投稿
返回
顶部