使用Pandas read_table和文件列表

时间:2017-04-14 21:42:48

标签: python excel pandas for-loop

我对Python一般都很陌生,但我正在尝试创建一个脚本,从文件夹中的某些文件获取数据并将其放入Excel电子表格中。

我的代码将在指定的文件夹中找到我想要的文件类型,然后创建一个包含完整文件路径的列表。

import os
file_paths = []

for folder, subs, files in os.walk('C://Users/Dir'):
    for filename in files:
        if filename.endswith(".log") or filename.endswith(".txt"):

                file_paths.append(os.path.abspath(os.path.join(folder,filename)))

它还将采用特定的文件路径,从正确的列中提取数据,并将其放入正确单元格中的Excel中。

import pandas as pd
import numpy

for i in range(len(file_paths)):
    fields = ['RDCR']
    data = pd.read_table(file_paths[i], sep= "\s+", names = fields, usecols=[3], 

我遇到问题的方法是让read_table遍历我的文件列表并将数据放入Excel工作表中,每次读取新文件时,它都会移动到电子表格中的一列上。

理想情况下,for循环会查看file_paths列表的长度,并将其用作范围。然后它将使用file_paths [i]逐个将文件名输入read_table。

它会发现file_paths的长度,而不是逐个遍历其中的文件,它只是输入列表中最后一个文件的数据。

任何帮助将不胜感激!谢谢!

1 个答案:

答案 0 :(得分:3)

尝试立即连接所有这些并写入excel一次。

from glob import glob
import pandas as pd

files = glob('C://Users/Dir/*.log') + glob('C://Users/Dir/*.txt')

def read_file(f):
    fields = ['RDCR']
    return pd.read_table(
        f, sep="\s+",
        names=fields, usecols=[3])

df = pd.concat([read_file(f) for f in files], axis=1).to_excel('out.xlsx')