如何在Python中使用数字读取文件中的特定行?

时间:2018-05-15 19:53:28

标签: python

我正在编写一个脚本来计算我所拥有的某些测量值的平均值和标准偏差。我想阅读该文件,并选择我想要的数据。

假设我的表格如下:

(1 2 3 4;
 4 x x x; 
 4 x x x; 
 4 x x x; 
 4 x x x)

现在我想创建脚本,以便我能够选择所有小于1的值,然后选择2以下的所有值,依此类推,因此我导入的文件取决于第一行的值。

2 个答案:

答案 0 :(得分:0)

您想使用enumerate()函数。

    with open(filename,'r') as file_object:
        for line_number, line in enumerate(file_object):
            if line_number in list_of_line_numbers:
                do_stuff_to(line)

其中list_of_line_numbers是包含您要拍摄的行的列表。这种方法的优点还在于,如果您正在使用大型文件,则不会将整个文件加载到内存中。

有关枚举函数的更多信息:

https://docs.python.org/3/library/functions.html#enumerate

答案 1 :(得分:0)

如果您的数据集不是太大,我会考虑使用Pandas Wrangling Library中的pandas.DataFrame

pandas.DataFrame(two_dimensional_array_like_object)

如果您的csv(example.csv)看起来像:

1,2,3
2,3,4
3,4,5

将其导入pandas.DataFrame

In[7]: import pandas as pd

In[8]: df = pd.read_csv('example.csv', headers=False)

In[9]: print(df)
   0  1  2
0  1  2  3
1  2  3  4
2  3  4  5

现在你有了一个非常实用的对象(df),它有许多用于数据争用的内置方法。

执行预期的切片:

In[10]: df_copy = df.loc[df[0]==2, :] # select rows that have the number 2 in the first column and make a copy
In[11]: print(df_copy) # print selected rows
   0  1  2
1  2  3  4