如何使用python以串行方式将多个csv合并到一个文件中? [英] How to combine multiple csv into one file in serial manner using python?

查看:533
本文介绍了如何使用python以串行方式将多个csv合并到一个文件中?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试将多个CSV文件合并为一个CSV文件。

I am trying to merge multiple CSV file into one CSV file.

CSV文件就像

 Energy_and_Power_Day1.csv,     
 Energy_and_Power_Day2.csv, 
 Energy_and_Power_Day3.csv,      
  ....................., 
 Energy_and_Power_Day31.csv

我使用了一个小的python脚本来连接多个CSV文件。以串行方式串联文件。
应该花费 Energy_and_Power_Day1.csv 然后是 Energy_and_Power_Day2.csv 然后是 Energy_and_Power_Day3.csv 就像这样。.但是,它不是随机地而不是串行地获取。
这是我的代码

I have used a small python script to concatenate the multiple CSV file.The script is doing it's job but it is not concatenate the files in serial manner. It should take Energy_and_Power_Day1.csv then Energy_and_Power_Day2.csv then Energy_and_Power_Day3.csv like this way.. but instead of this it takes randomly not in serially. This is my code

import pandas as pd
import csv
import glob
import os

os.chdir("/home/mayukh/Downloads/Northam_bill_data")
results = pd.DataFrame([])
filelist = glob.glob("Energy_and_Power_Day*.csv")
#dfList=[]
for filename in filelist:
  print(filename)  
  namedf = pd.read_csv(filename, skiprows=0, index_col=0)
  results = results.append(namedf)

results.to_csv('Combinefile.csv')

脚本从 print(filename)提供此输出,并以这种方式组合这些csv文件。

The script is giving this output from print(filename) and combine these csv files in this manner.

Energy_and_Power_Day1.csv
Energy_and_Power_Day16.csv
Energy_and_Power_Day23.csv
Energy_and_Power_Day22.csv
Energy_and_Power_Day11.csv
Energy_and_Power_Day21.csv
Energy_and_Power_Day31.csv
Energy_and_Power_Day17.csv
Energy_and_Power_Day25.csv
Energy_and_Power_Day28.csv
Energy_and_Power_Day9.csv
Energy_and_Power_Day19.csv
Energy_and_Power_Day7.csv
Energy_and_Power_Day15.csv
Energy_and_Power_Day20.csv
Energy_and_Power_Day24.csv
Energy_and_Power_Day4.csv
Energy_and_Power_Day6.csv
Energy_and_Power_Day14.csv
Energy_and_Power_Day13.csv
Energy_and_Power_Day27.csv
Energy_and_Power_Day3.csv
Energy_and_Power_Day18.csv
Energy_and_Power_Day8.csv
Energy_and_Power_Day30.csv
Energy_and_Power_Day12.csv
Energy_and_Power_Day29.csv
Energy_and_Power_Day10.csv
Energy_and_Power_Day5.csv
Energy_and_Power_Day2.csv
Energy_and_Power_Day26.csv

我的问题是,如何或以何种方式可以依次合并这些CSV文件?

My question is how or which way I can combine those CSV files serially?

推荐答案

这不是随机的(这取决于底层文件系统如何组织这些文件– @ tripleee )。

It's not "random" (it would depend on how these files are organised by the underlying file system – @tripleee).

您可以在打开文件之前对文件名进行排序。将 list.sort key 参数一起使用。之后,您可以使用列表推导,并将数据帧列表传递给 pd.concat 应该 DataFrame.append 效率更高。

You can sort the filenames before you open the files. Use list.sort with a key parameter. Following this, you can use a list comprehension, and pass a list of dataframes to pd.concat. It should be more efficient than DataFrame.append.

import re

filelist = glob.glob("Energy_and_Power_Day*.csv")
filelist.sort(key=lambda x: int(re.search('\d+', x).group()))

df = pd.concat([
        pd.read_csv(f, skiprows=0, index_col=0) for f in filelist
     ],
     axis=0
)

这篇关于如何使用python以串行方式将多个csv合并到一个文件中?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆