如何从python中的文件夹中打开多个csv文件?

时间:2018-11-07 12:24:10

标签: python

我想在python中打开多个csv文件,整理它们,然后让python创建一个新文件,其中包含重组后的多个文件中的数据...

有没有办法从我的桌面上的单个目录中读取所有文件并像这样在python中读取它们?

非常感谢

2 个答案:

答案 0 :(得分:2)

如果您有一个包含csv文件的目录,并且它们都具有扩展名.csv,则可以使用globpandas来全部读取它们并将它们串联到一个csv文件中。例如,假设您有一个目录,如下所示:

csvfiles/one.csv
csvfiles/two.csv   

其中one.csv包含:

name,age

Keith,23
Jane,25

two.csv包含:

name,age

Kylie,35
Jake,42

然后,您可以在Python中执行以下操作(您将需要使用pip install pandas安装熊猫):

import glob
import os
import pandas as pd

# the path to your csv file directory
mycsvdir = 'csvdir'

# get all the csv files in that directory (assuming they have the extension .csv)
csvfiles = glob.glob(os.path.join(mycsvdir, '*.csv'))

# loop through the files and read them in with pandas
dataframes = []  # a list to hold all the individual pandas DataFrames
for csvfile in csvfiles:
    df = pd.read_csv(csvfile)
    dataframes.append(df)

# concatenate them all together
result = pd.concat(dataframes, ignore_index=True)

# print out to a new csv file
result.to_csv('all.csv')

请注意,输出csv文件将在前面有一个附加列,其中包含该行的索引。为避免这种情况,您可以改用:

result.to_csv('all.csv', index=False)

您可以查看to_csv()方法here的文档。

希望有帮助。

答案 1 :(得分:0)

这是一种非常简单的方法来做您想做的事。

import pandas as pd
import glob, os

os.chdir("C:\\your_path\\")
results = pd.DataFrame([])

for counter, file in enumerate(glob.glob("1*")):
    namedf = pd.read_csv(file, skiprows=0, usecols=[1,2,3])
    results = results.append(namedf)

results.to_csv('C:\\your_path\\combinedfile.csv')

请注意此部分:glob("1*")

这只会查找名称以“ 1”开头的文件(1、10、100等)。如果需要所有内容,请将其更改为:glob("*")

有时,有必要将所有CSV文件合并为一个CSV文件,有时您只想合并一些符合特定命名约定的文件。拥有此功能真好!