【问题标题】:How to import certain rows from a file using read_csv如何使用 read_csv 从文件中导入某些行
【发布时间】:2016-12-12 12:14:52
【问题描述】:

我有一个充满文件的文件夹,其中包含各种模拟结果。我正在尝试将每个文件中的一行导入数据框。我一直在使用 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)。当我使用上面的代码时,我得到了一个正确大小的数据框和正确的列。但是,数据框中的数据来自错误的列。

我知道我需要更改skirows,并且我知道您可以将一个列表传递给该参数,但是您如何确保其中一个成为标题?

非常感谢。

MT

【问题讨论】:

    标签: python pandas


    【解决方案1】:

    我会建议一种更简单的方法来做到这一点(可能不是最好的方法)。这应该可以。

    试试这个:

    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])
    

    如果您遇到困难,请告诉我。乐于助人!!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-06
      • 2021-02-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多