遍历目录并创建数据框

时间:2017-09-07 05:07:11

标签: python pandas

我正在尝试创建一个数据框,然后遍历一个填充了csv文件的目录,并将它们添加到数据框中。我正在尝试使用以下代码:

df = []
for dirName, subdirList, fileList in os.walk(rootDir):
    for fname in fileList:
         df = pd.read_csv(fname)

不幸的是,我收到一条错误,指出“文件CIN_2017不存在”(确实如此)。有关如何将所有这些csv文件添加到数据框中的任何见解?那里有一个.DS_Store,但其他一切只是一个csv。谢谢。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用glob的其他解决方案作为返回文件名,然后循环列表理解并创建list of DataFrames。最后将它们连接到一个大df:

import glob

files = glob.glob('files/*.csv')
df = pd.concat([pd.read_csv(fp) for fp in files], ignore_index=True)

与:

相同
import glob

files = glob.glob('files/*.csv')
dfs = []
for fp in files:
    dfs.append(pd.read_csv(fp))

df = pd.concat(dfs, ignore_index=True)

答案 1 :(得分:0)

import os
import pandas as pd

un_process_file = []

master_frame = pd.DataFrame(columns=['item_sku', 'external_product_id', 'standard_price', 'quantity'])
for root, dirs, files in os.walk(os.getcwd()):
    for file_path in files:
        if file_path.endswith('.csv'):
            try:
                print file_path
                file_name = os.path.join(root, file_path)
                file_frames = pd.read_csv(file_name, skiprows=2,
                                          usecols=['item_sku', 'external_product_id', 'standard_price', 'quantity'])
                master_frame = master_frame.append(file_frames)
            except:
                un_process_file.append(file_path)
master_frame = master_frame.rename(
    columns={'item_sku': 'sku', 'external_product_id': 'asin', 'standard_price': 'price'})
master_frame = master_frame.drop_duplicates(subset='asin')
master_frame.to_csv('masterfile.txt', sep='\t')
if un_process_file:
    print '\nUnable To Process these files\n'
    for files in un_process_file:
        print files

我有类似的问题。我做了这个解决方案。根据需要修改columns名称