Python3比较来自csv

时间:2015-11-14 14:31:40

标签: python csv python-3.x pandas

我正在使用python3.5

导入我的csv文件后,我想要这些操作: IN:

ULIM LLIM High Low CLO $RNG U-OCT MID L-OCT
-------------------------------------------

12785 125300 127840 127500 127475 1275 127532 126575 125618

OUT:

Dir ULIM LLIM High Low CLO $RNG U-OCT MID L-OCT Test
----------------------------------------------------

S   12785 125300 127840 127500 127475 1275 127532 126575 125618 T

添加两个新Colums:方向和测试

在U-OCT到ULIM范围或L-OCT到LLIM范围值内的T = IF CLO或高或低值    否则没有条目

如果CLO高于MID,则S = L,如果CLOS低于MID,则S =

这是我想要学习/需要帮助的地方:

我不知道如何进行比较部分并在新的两个列中添加结果。 (数组?) 我不知道如何为整个csv表做这个(循环?)

1 个答案:

答案 0 :(得分:0)

您可以迭代每一行并检查检索到的字典,如下所示:

import csv

output = open('csv_file_out.txt', 'w')
with open('csv_file.txt') as csvfile:
    reader = csv.DictReader(csvfile, delimiter=' ')
    writer = csv.writer(output, delimiter=' ')
    T = False
    S = 'S'
    for i, row in enumerate(reader):
        if i > 0:
            if row['CLO'] > row['MID']:
                S = 'L'
            if row['U-OCT'] <= row['CLO'] <= row['ULIM']:
                T = True

            writer.writerow([S, row['CLO'], row['ULIM'], row['LLIM'], 'T' if T else ''])               

您必须根据需要更新规则。另外,你可以为writer.writerow()找到更清晰的方法,但我并不熟悉。