我正在从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循环吗?
答案 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