我正在尝试创建一个数据框,然后遍历一个填充了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。谢谢。
答案 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
名称