2017-02-23 89 views
0

您好我在查看csv文件中的特定行和列時遇到了一些問題。如何在一定範圍內打印值時讀取CSV文件中的特定行和列

我目前的目標是看幾個有3個不同的列。最重要的是,我想查看數據值(例如0.26),並在特定列中對0.21到0.31之間的數據進行排序。我的問題是,我不知道如何在同一時間做這兩個。我不斷收到錯誤,告訴我我不能使用'< ='和float和str。

繼承人我的代碼:

import csv 
    from collections import defaultdict 

    columns = defaultdict(list) # each value in each column is appended to a list 

    with open('C:\\Users\\AdamStoer\\Documents\\practicedata.csv') as f: 
    reader = csv.DictReader(f,delimiter=',') # read rows into a dictionary format 
    for row in reader: 
     for columns['pitch'] in row: 
      for v in columns['pitch']: 
       p=float(v) 
       if p <= 0.5: 
        columns['pitch'].append(v) 
    print(columns['pitch']) 

此代碼是最後部分之前的工作

for row in reader: # read a row as {column1: value1, column2: value2,...} 
    for (k,v) in row.items(): # go over each column name and value 
     columns[k].append(v) # append the value into the appropriate list 
          # based on column name k 
print(columns['pitch']) 

回答

0

你看上去混亂有兩件事情。如果您知道所需的特定列(音高),則不必循環遍歷每行中的所有列。您可以直接訪問它,如下所示:

for row in reader: 
    p = float(row['pitch']) 
    if p <= 0.5: 
     print p 

這是我很難告訴你想要的輸出,但在這裏,着眼於只是各行的間距一個例子,如果它是一個匹配追加所有的目標值爲該行添加到列字典。

targets = ('pitch', 'roll', 'yaw') 
columns = defaultdict(list) 

for row in reader: 
    p = float(row['pitch']) 
    if p >= 0.21 and p <= 0.31: 
     for target in targets: 
      column[target].append(row[target]) 
+0

非常感謝!這是完美的。我正在閱讀關於此的較舊的帖子,並且我很難整理出一些東西。並感謝您的快速響應! :) – Adam

相關問題