我想在python中打开多个csv文件,整理它们,然后让python创建一个新文件,其中包含重组后的多个文件中的数据...
有没有办法从我的桌面上的单个目录中读取所有文件并像这样在python中读取它们?
非常感谢
答案 0 :(得分:2)
如果您有一个包含csv文件的目录,并且它们都具有扩展名.csv
,则可以使用glob
和pandas
来全部读取它们并将它们串联到一个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文件,有时您只想合并一些符合特定命名约定的文件。拥有此功能真好!