读取csv并根据列过滤它

时间:2017-05-03 12:53:41

标签: python pandas

我正在从csv文件中读取数据

reader = pd.read_csv(csvfile, sep=';', header=0)
list1=[]
list2=[]      

这里我逐行读取csv文件:

for row in reader.itertuples():
            list1.append(row)

然后我查看新列表并根据条件对其进行过滤:

for i in range(len(list1)):
         if(list1[i][5]==highestpointheight):
                list2.append(list1[i])  

现在我有一个根据条件过滤的列表。

还有其他有效的方式让我没有两个for循环吗?

2 个答案:

答案 0 :(得分:2)

您可能想要颠倒两个操作的顺序:

尝试:

reader = reader[reader.iloc[:, 5] == highestpointheight] # filter the 6th column based on highestpointheight
for row in reader.itertuples():
        list1.append(row)

答案 1 :(得分:2)

pd.read_csv(csvfile, sep=';', header=0).loc[lambda df: df[5] == highestpointheight, :]

请参阅http://pandas.pydata.org/pandas-docs/stable/indexing.html#selection-by-callable