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

Posted

技术标签:

【中文标题】如何使用 read_csv 从文件中导入某些行【英文标题】:How to import certain rows from a file using 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

【问题讨论】:

【参考方案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])

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

【讨论】:

以上是关于如何使用 read_csv 从文件中导入某些行的主要内容,如果未能解决你的问题,请参考以下文章

在Jupyter中导入csv文件时出错

如何更新/覆盖当前在 R 中导入的 csv 文件

如何从 JSON 文件中导入字段?

从文件夹中导入 Python 3 中的 .csv 文件

使用 css 模块,如何从文件中导入类

考虑到需要在某些类中导入框架,如何在 iOS 项目的特定目标中使用框架?