簡體   English   中英

如何在打印一定范圍內的值時讀取CSV文件中的特定行和列

[英]How do I read specific rows AND columns in CSV file while printing values within a certain range

嗨,我在查看csv文件中的特定行和列時遇到一些問題。

我當前的目標是在其中的三個不同的列中查找。 最重要的是,我想查看數據值(例如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'])

看起來您在混淆兩件事。 如果知道想要的特定列(間距),則不必遍歷每一行中的所有列。 您可以像這樣直接訪問它:

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

我很難說出您想要什么輸出,但是這里有一個示例,僅查看每行的音高,如果匹配,則將該行的所有目標值附加到column字典中。

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])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM