资讯专栏INFORMATION COLUMN

python -查找重复邮箱,保留没重复过的值

AlphaGooo / 2289人阅读

摘要:用读文件个邮件列表去重后,不包含的数据这次是要读取两个的文件,然后查看表中的邮箱不在中的邮箱,然后将结果另存为知识点读,没有列标题,命名标题合并两个,然后找不同。在的话,要先选择最后一列为的值。

用pd读excel文件--2个邮件列表去重后,不包含的数据

这次是要读取两个excel的文件,然后查看tiany表中的邮箱不在spam中的邮箱,然后将结果另存为"email_result.xlsx"

知识点

读excel,没有列标题,命名标题

合并两个dataframe,然后找不同。用merge

取不包含*的值,再isin前面加 ~

写入csv,要注意是否包含了前面的索引

1、读excel

读excel文件
两个excel表都仅有邮箱一列,且无列名,所以在读取时要标明无列名,且要将列命名为"mail".
下面的代码时错误的:
tianyan = pd.read_excel("C:/Users/*/Documents/tiany.xlsx",header=None)

出来之后标题是0,用rename函数也改不过来

然后在header= None后面加了 "names = "mail" 还是不对,看不懂英文啊,吃大亏!!!

无奈求助大神,names都不会用?你看文档了吗?看不懂英文,来我教你看文档 (习惯性被鄙视(●ˇ∀ˇ●)

然后大神带着我看了一遍这个函数的英文解释才晓得,names后面应该是列表
header : int, list of ints, default 0

Row (0-indexed) to use for the column labels of the parsed DataFrame. If a list of integers is passed those row positions will be combined into a MultiIndex. Use None if there is no header.

names : array-like, default None

List of column names to use. If file contains no header row, then you should explicitly pass header=None

正确的应该是这个样子的:
tianyan = pd.read_excel("C:/Users/*/Documents/tiany.xlsx",header=None,names= ["mail"])
spam = pd.read_excel("C:/Users/*/Documents/spam.xlsx",header =None,names=["mail"])

两个表字段都命名为”mail",方便后期处理

然后在每个dataframe后面加一列,用于区分
tiany表在后面加了一列:tiany,
spam表在后面加了一列:spam (字段名和值相同)

tiany["tiany"] = "tiany"
spam["spam"] = "spam"

2、合并两个dataframe,找到tiany中没有包含spam的邮箱

谷歌后用pd.merge函数,参照举例及文档,选择left

pd.merge(tiany,spam, how= "left", on = "mail")

最后的行数与tiany相同,要取最后一列为NaN的数据

3、计算结果

要保留最后一列为NaN的邮箱列
如果用excel的话就很方便了,先筛选最后一列为"NaN"的值,然后筛选第一列的邮箱,复制到新表另存为即可。

在python的话,要先选择最后一列为"NaN"的值。选spam的好选,如果是"NaN"的话就要报错了。

上面这个图是看有多少是spam的值,下面这个图是把只选最后一列为“NaN”的值,记得在前面加一个
~表示反选。(网上太多人抄别人的文章了,就不能自己写吗  ̄へ ̄)

感谢STACK OVERFLOW网站,最后找到了反选的方法

这样还是没有完的,因为最后只保留第一列邮箱,其他的不要。所有上面的代码没问题,我就把值赋值给了email,然后再把最终结果保存到csv中

4、保存结果

先赋值给email_result
(新手就老老实实把步骤写好,打好基础,坑踩两次就好了)

email_result = email.mail
email_result

再保存

email_result.to_csv("C:/Users/xiaom/Documents/email_result.csv")

保存之后发现有索引,算了,就这样把,没啥影响。

第一篇博客就到这,用了这么久时间写,希望自己能不要重复踩坑,拜拜。
(写这么长,希望别被抄走了,转载、复制之类请发送站内信给我。虽然不一定会有人看到,但还是要说明一下)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/44880.html

相关文章

  • CentOS7.3 编译安装 Python3.6.2

    摘要:我使用的是安装查看是否已经安装默认安装了因为一些命令要用它比如它使用的是使用命令查看一下是否安装然后查看一下可执行文件的位置进入到目录月月月可以看到可执行文件指向,又指向也就是说命令执行的系统预装的要安装的其他版本先执行命令 showImg(https://segmentfault.com/img/remote/1460000012923762); 我使用的是 CentOS7.3 安装...

    yibinnn 评论0 收藏0
  • Python入门-Python简介

    摘要:年月宣布支持时间延长到年。更详细的发布列表参阅官网的版本号分为三段,形如。其中表示大版本号,一般当整体重写,或出现不向后兼容的改变时,增加表示功能更新,出现新功能时增加表示小的改动如修复了某个,只要有修改就增加。年公司正式发布。 < 返回索引页 Python语言简介 Python介绍及发展 介绍 Python 官方网站:https://www.python.org/, 大家可以到此处下...

    Java_oldboy 评论0 收藏0
  • 宝塔面板,升级默认python2.7为python3.X,并共存!

    摘要:虽然宝塔自带了管理器,但是这个玩意并不好用。设置为默认版本的默认路径,在下面。这里也可以看到宝塔的默认版本为,需要使用命令才可以看到。此时的和也已经共存。centos7的默认python版本为2.7,但是2.7这个版本太老了,很多童鞋想升级为高版本。虽然宝塔自带了python管理器,但是这个玩意并不好用。此外centos的很多命令是基于py2.7,所以你升级python,请不要删除旧版本,新...

    Astrian 评论0 收藏0
  • Awesome Python II

    摘要: Caching Libraries for caching data. Beaker - A library for caching and sessions for use with web applications and stand-alone Python scripts and applications. dogpile.cache - dogpile.cache...

    lx1036 评论0 收藏0
  • 编程书单:十本Python编程语言的入门书籍

    摘要:本文与大家分享一些编程语言的入门书籍,其中不乏经典。全书贯穿的主体是如何思考设计开发的方法,而具体的编程语言,只是提供一个具体场景方便介绍的媒介。入门入门容易理解而且读起来幽默风趣,对于编程初学者和语言新手而言是理想的书籍。 本文与大家分享一些Python编程语言的入门书籍,其中不乏经典。我在这里分享的,大部分是这些书的英文版,如果有中文版的我也加上了。有关书籍的介绍,大部分截取自是官...

    desdik 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<