如何使用 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 从文件中导入某些行的主要内容,如果未能解决你的问题,请参考以下文章