合并来自同一目录的两个相同的CSV-Python

合并来自同一目录的两个相同的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

我在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 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