2017-05-03 100 views
-1

我从CSV文件中读取数据读取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

为什么你会不使用熊猫['.sort'](你的'reader'对象上的http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.sort.html)? –

+2

如果您使用的是熊猫,您应该学会使用数据框而不是将它们转换为Python列表或numpy数组。 – xvan

+0

@xvan:我需要这样的输出以便我的应用程序(graphql resolver)可以读取它:[Pandas(Index = 5,ullid = 1,sheetid = 2,highestpointheight = 332)],我可以得到这个输出熊猫数据框? – User193452

回答

2

你可能要扭转这两个操作的顺序:

尝试:

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