合并来自同一目录的两个相同的CSV-Python
我在CSV中有两个结构相同的数据帧。我想读取CSV并合并它们以创建一个更大的数据帧。目录中只有两个数据帧 第一个CSV称为“第一个”: 第二个CSV称为“第二个”: 我的代码是:合并来自同一目录的两个相同的CSV-Python,python,csv,pandas,dataframe,Python,Csv,Pandas,Dataframe,我在CSV中有两个结构相同的数据帧。我想读取CSV并合并它们以创建一个更大的数据帧。目录中只有两个数据帧 第一个CSV称为“第一个”: 第二个CSV称为“第二个”: 我的代码是: import os import pandas as pd targetdir = "C:/Documents and Settings/USER01/Mis documentos/experpy" filelist = os.listdir(targetdir) for file in
import os
import pandas as pd
targetdir = "C:/Documents and Settings/USER01/Mis documentos/experpy"
filelist = os.listdir(targetdir)
for file in filelist :
df_csv=pd.read_csv(file)
big_df = pd.concat(df_csv)
不幸的是,它不起作用。如何解决这个问题?concat获取一个系列的列表或目录:,因此您可以做的是列出数据帧,并将它们全部合并在一起,形成您的大df:
filelist = os.listdir(targetdir)
df_list=[]
big_df=None
for file in filelist :
df_list.append(pd.read_csv(file))
big_df = pd.concat(df_list,ignore_index=True)
或者,您可以附加:
filelist = os.listdir(targetdir)
big_df=None
for file in filelist :
big_df.append(pd.read_csv(file), ignore_index=True)
我认为你应该改变你的道路:
targetdir = r'C:\Documents and Settings\USER01\Mis documentos\experpy'
上面使用的原始字符串避免了在Windows系统上对斜杠进行不明确的解析如果您只需要两个CSV,那么您可能只需要使用
pd.merge
first = pd.read_csv( 'first.csv' ) # insert your file path
second = pd.read_csv( 'second.csv' )
big_df = (first, second, how='outer') # union of first and second
我已经尝试了你的第一个代码,但是有一条消息说:“File first.csv不存在”你能打印你的文件并检查它们是否有效吗?我不能帮你解决你的错误,因为它是PCI的本地代码,我不知道它是否有帮助,但是“targetdir”不在我使用的Ipython笔记本的工作目录中。请尝试将targetDir设置为
targetDir=r'C:\Documents and Settings\USER01\Mis documentos\experpy'
问题在于我的问题示例只是一个简单的说明。我真的很想将30个csv合并到一个csv中。(不幸的是,我是新手,所以我只能在这里发表评论:)我认为EdChum的解决方案应该可行,尝试使用targetdir+file
作为路径,而不仅仅是file
你可能需要为targetdir添加一个额外的斜杠,在for循环中列出df_csv,称之为l。然后在循环外进行pd.concat(l)。pd.concat将列表作为参数,而不是单个数据帧。如果需要,您可以在之后使用drop_duplicates
targetdir = r'C:\Documents and Settings\USER01\Mis documentos\experpy'
first = pd.read_csv( 'first.csv' ) # insert your file path
second = pd.read_csv( 'second.csv' )
big_df = (first, second, how='outer') # union of first and second