使用Pandas合并两个CSV文件

5

我有两个CSV文件(emails1.csv和emails2.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文件只包含电子邮件列。

感谢您的帮助。


抱歉,不是concat,而是pd.merge。 - Kenyis
1
在这种情况下,您能否提供一些示例输入和预期输出?很难理解您想要什么。 - cs95
1
@jvera 不,那不是我问的。我希望你从你的CSV中取出5行,连同你的_expected output_,并使用编辑链接将其添加到你的问题中。如果你能做到这一点,那么就有可能帮助你。 - cs95
是的,没错 - Kenyis
我无法编辑这个问题 :( - Kenyis
显示剩余5条评论
1个回答

4
你没有学会如何将两个数据框合并。我对你给出的代码进行了微小的调整,现在它可以完美地工作。
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
one@gmail.com
two@gmail.com

这是 emails2.csv 文件:
email
three@gmail.com
four@gmail.com

执行完我的代码后,这是最终生成的final.csv文件:

email
one@gmail.com
two@gmail.com
three@gmail.com
four@gmail.com

我希望您需要的是这个。 :-) 干杯!


谢谢!你的代码可行,但我正在寻找更多内容,我发现了你的代码的一个变体:这是你的代码: 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
关于跳过列名,这是pandas自己做的很酷的小技巧之一。每当您将csv文件加载到pandas数据帧中时,它会自动将第一行作为列标题行,下面的行则是实际数据。如果您觉得这很不方便,我想您可以通过在读取时传递某个参数来避免它,我想是"header=False",如果我没记错的话。 - Sayan Sil
关于"merge"的称呼方式...嗯,事实证明我们今天都学到了新东西。确实,pd.merge也可以工作!事实上,它更受欢迎。我一直在使用df.merge,这就是为什么我指出来的原因。 谢谢。 :D - Sayan Sil
谢谢!解释得很好!另外一个问题,如果我有多个文件,我该怎么合并它们?我的意思是,这个方法只能用于两个文件,但如果我有更多的文件呢? - Kenyis
看一下 pandas 的“concat”文档。这可以解决所有问题。 - Sayan Sil

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接