利用python判断CSV表中存在A列不存在B列的数据并导出

脚本背景:通过脚本快速处理工作中获取的大量数据,筛选出存在A列不存在B列的数据,并将结果保存到CSV文件中。

方法1:

import pandas as pd
import numpy as np
from pandas.core.frame import DataFrame
data=pd.read_csv('C:\\Users\\admin\\Downloads\\data.csv',sep=',')
a=data['a'].tolist()
b=data['b'].tolist()
#using set to quickly judge duplicated data
A=set(a)
B=set(b)
d=[x for x in A if x not in B]
dd=DataFrame(d) #convert data to the type of DataFrame
dd.to_csv('C:\\Users\\admin\\Downloads\\data1.csv') #save the result data in csv file

脚本背景:给定2个txt文本,还有一个result.txt文本,需要判定是否在之前的2个txt文本中出现过,实现代码如下:
思路和上面方式差不多

import pandas as pd
import numpy as np
from pandas.core.frame import DataFrame
f1=pd.read_table("C:\\Users\\admin\Downloads\\1.txt")
f2=pd.read_table("C:\\Users\\admin\Downloads\\2.txt")
f3=pd.read_table("C:\\Users\\admin\Downloads\\result.txt")
ff=f1.append(f2)
print(ff['telephone'].head())
a=ff['telephone'].tolist()
b=f3['telephone'].tolist()
A=set(a)
B=set(b) #using set thought
d=[x for x in B if x not in A]  #it also can using set subtract
dd=DataFrame(d)
dd.to_csv('C:\\Users\\admin\\Downloads\\result.csv')
print(dd.head(10))
延伸阅读:
上面的方法采用了集合的思路,那么可以根据集合的特性通过集合做差,这样就可以判断存在B而不存在A了,那么采用这种方法,上面的Eg2 中if判断那一块可以直接改写成
d=list(B-A) 就好了 其余的保持不变
还有个小细节就是set类型是不能直接转换成DateFrame类型的,但是set和list之间是可以互相转化的,然后list可以转换成DateFrame,通过这个就可以将结果最终变换成DataFrame类型然后进行相关的操作。



猜你喜欢

转载自blog.csdn.net/qq_27575895/article/details/80901859