如何使用read_csv从文件导入某些行

时间:2016-12-12 12:14:52

标签: python pandas

我有一个文件夹,里面包含各种模拟结果。我试图将每个文件中的单行导入数据框。我一直在使用Pandas read_csv 函数来执行此任务。以下是我一直使用的代码: -

p32 = pd.DataFrame()
file_list = glob.glob('*.sts')


for file in file_list:  
    if p32.empty:
         p32 = pd.read_csv(file, sep='\t', skiprows = 9, header = 1, nrows = 1 , skip_blank_lines = True, encoding = 'ISO-8859-1', skipinitialspace = True )
         itz = file.split('.')[0].split('_')[2]
         p32['Iteration'] = itz
    else:
        p32_temp = pd.read_csv(file, sep = '\t', skiprows = 9, nrows = 1, header =1 , encoding = 'ISO-8859-1', skipinitialspace = True )
        itz = file.split('.')[0].split('_')[2]
        p32_temp['Iteration'] = itz
        p32 = pd.concat([p32, p32_temp], axis = 0)
        del p32_temp

问题是,我需要在两个不同的索引位置提取两条不同的行。第一个位置有标题(索引= 10),第二个位置包含数据(索引14)。当我使用上面的代码时,我得到一个正确大小的Dataframe,具有正确的列。但是,数据框内的数据来自错误的列。

我知道我需要更改这些跳转,我知道你可以将一个列表传递给这个参数,但是你怎么能确保其中一个成为标题呢?

非常感谢。

MT

1 个答案:

答案 0 :(得分:0)

我建议一种更简单的方法(可能不是最好的方法)。这应该有用。

试试这个:

file_list = glob.glob('*.sts')
run_once = 0
for file in file_list:
    df = pd.read_csv(file, sep = '\t').iloc[[10,14]]
    if run_once == 0:
        frames = df
        run_once = 1
    else:
        frames = pd.concat([frames, df])

如果你遇到困难,请告诉我。很乐意帮忙!!