python去重保留唯一一个值_python -查找重复邮箱,保留没重复过的值

用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",方便后期处理

bVbiLaz?w=330&h=165

然后在每个dataframe后面加一列,用于区分

tiany表在后面加了一列:tiany,

spam表在后面加了一列:spam (字段名和值相同)

tiany['tiany'] = 'tiany'

spam['spam'] = 'spam'

bVbiLaP?w=487&h=248

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

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

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

bVbiLdr?w=701&h=372

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

3、计算结果

要保留最后一列为NaN的邮箱列

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

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

bVbiLdo?w=455&h=211

上面这个图是看有多少是spam的值,下面这个图是把只选最后一列为“NaN”的值,记得在前面加一个

~表示反选。(网上太多人抄别人的文章了,就不能自己写吗  ̄へ ̄)

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

bVbiLdW?w=731&h=354

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

bVbiLe0?w=735&h=505

4、保存结果

先赋值给email_result

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

email_result = email.mail

email_result

再保存

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

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

第一篇博客就到这,用了这么久时间写,希望自己能不要重复踩坑,拜拜。

(写这么长,希望别被抄走了,转载、复制之类请发送站内信给我。虽然不一定会有人看到,但还是要说明一下)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值