2017-02-23 40 views
0

Привет У меня возникли проблемы с конкретными строками и столбцами в файле csv.Как читать определенные строки И столбцы в CSV-файле при печати значений в определенном диапазоне

Моя текущая цель - посмотреть 3 разных столбца из нескольких, которые есть. И вдобавок ко всему, я хочу посмотреть на значения данных (например, 0.26) и отсортировать те, которые находятся между 0.21 и 0.31 в определенном столбце. Моя проблема в том, что я не знаю, как сделать это одновременно. Я продолжаю получать ошибки, которые говорят мне, что я не могу использовать '< =' с float и str.

Heres мой код:

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

Смежные вопросы