使用熊猫连接CSV文件会导致重复

时间:2018-10-26 13:45:54

标签: python pandas dataframe data-analysis

我正在Google Colab上编写一个python方法,以便进入84个.csv的文件夹,将它们连接起来并输出一个新的.csv

这是方法

def concatenate(indirectory = "/content/gdrive/My Drive/Folder/Folder", outfile = "/content/gdrive/My Drive/--.csv"):
  os.chdir(indirectory)
  fileList = glob.glob("*.csv")
  dfList = []
  colnames = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L"]
  for filename in fileList:
      print(filename)
      df = pd.read_csv(filename, header = None)
      dfList.append(df)
  concatDf = pd.concat(dfList, axis = 0)
  concatDf.columns = colnames
  concatDf.to_csv(outfile, index = None)

这种方法可以将文件串联到一定程度,将标题复制到新行中,我手动删除了这些行,但是很高兴知道如何在方法中删除它们。

但是,出于我不了解的原因,这采用了列A中保存的一些ID,并在列A为空的行中重复了它们。直到我开始对涉及A列和

的数据进行一些分析之后,我才意识到
aCount = df['A'].value_counts()

正在显示一些ID多次复制到空行中。

过去2天我一直在尝试,无法弄清楚我的方法出了什么问题。

1 个答案:

答案 0 :(得分:0)

看起来您的列索引可能有问题。标题重复是由于您告诉熊猫您的csvs没有标题而引起的,因此它正在将csv的第一行作为数据读取,但听起来标题确实存在,因此它们被作为数据包含在数据帧中。可能这也弄乱了您的索引,可能导致数据重复。

for filename in fileList:
    print(filename)
    df = pd.read_csv(filename) # if the headers are the same, use them (i.e. don't use header=None if the headers are present)
    # df.columns = colnames # if they are not the same, you should make them the same
    dfList.append(df)
concatDf = pd.concat(dfList, axis=0) # you can also add arg ignore_index=True to concat on column order rather than column name
concatDf.to_csv(outfile, index=False)