2017-11-11 145 views
0

我有2 CSV(emails1.csv和emails2.csv)加入2 CSV与熊猫

我需要的是加入这两个CSV成一个,因为他们是太大了与Excel的工作。

我需要导出为CSV和TXT。

我所做的是创建一个Python文件:

import csv 
import pandas as pd 
import numpy as np 

df1 = pd.read_csv("emails1.csv") 
df2 = pd.read_csv("emails2.csv") 

df3 = pd.merge(df1, df2, on=["email"]) 
df3.to_csv("final.csv",index=False) 

的CSV只有email列

感谢您的帮助。

+0

所以,你只是想加载和连接来自两个CSV的电子邮件列,并不关心其他列? –

+0

对不起,不是concat,是pd.merge – Kenyis

+1

在这种情况下,你能提供一些样本输入和预期输出吗?很难理解你想要什么。 –

回答

0

你错过了如何加入了两个dataframes。 我只是对给定的代码做了一个小的调整,它完美的工作。

import csv 
import pandas as pd 
import numpy as np 

df1 = pd.read_csv("emails1.csv") 
df2 = pd.read_csv("emails2.csv") 

df3 = df1.merge(df2, on=["email"], how='outer') 
df3.to_csv("final.csv",index=False) 

请注意how参数的方式,以及merge被调用。

这是emails1.csv

email 
[email protected] 
[email protected] 

这是emails2.csv

email 
[email protected] 
[email protected] 

这是final.csv执行我的代码之后:

email 
[email protected] 
[email protected] 
[email protected] 
[email protected] 

我希望这是你想要的。 :-)干杯!

+0

谢谢!,你的代码工作,但我搜索更多,我发现你的代码的变体: 这是你的代码: df3 = df1.merge(df2,on = [“email”],how ='outer') df3.to_csv(“final.csv”,index = False) 这是变化: df3 = pd.merge(df1,df2,on = [“email”],how ='outer ') df3.to_csv(“final.csv”,index = False) 这两个工作,但是,为什么你使用df1.merge?有什么不同?另外,你是如何避免来自emails2的电子邮件?因为跳过列的名称。 谢谢! – Kenyis

+0

关于跳栏的名称,这是熊猫本身就很酷的小技巧之一。无论何时将csv文件加载到熊猫数据框中,它都会自动将第一行作为列标题行,将其下方的行作为实际数据。如果你觉得不方便,我想你可以在阅读时通过传递某个参数来避免它,如果我没有记错的话,我猜“header = False”。 –

+0

关于“合并”的方式被称为...嗯,事实证明,我们都学到了今天的新东西。肯定pd.merge的作品也是!事实上,它更“被接受”。直到现在我一直在使用df.merge,这就是为什么我指出了这一点。 谢谢。 :D –