0

Pythonで非常に基本的な質問があります。csv ファイルの各行を調べて、行 1 の最初のフィールドが次の行の最初のフィールドと同じかどうかを比較します。一致が見つかった場合は、そのフィールドを object1 に入れたいと思います。それ以外の場合は、そのフィールドを別の object2 に入れます。最後に、object1 と object2 のフィールドの数を数えたいと思います。これはpythonで行うことができますか?ここに小さな例があります。

BRM_1   679 1929
BRM_1   203 567
BRM_2   367 1308
BRM_3       435     509

ご覧のとおり、line1 の field1 は line2 の field2 と同じであるため、フィールド BRM_1 を object1 に配置し、BRM_2 と BRM_3 を object2 に配置する必要があります。したがって、object1 の最終的な数は 1 で、object2 は 2 です。

4

1 に答える 1

1

この質問が答えられていないのを見たとき、私は気分が悪くなりました。まだ答えが必要かどうかはわかりませんが、どうぞ。ファイルの読み取り方法と、それらからリストのリストを作成する方法を知っていると思います

file1=[['a',1,2],['a',3,4],['b',4,5],['c',3,5]]

li1=[] #first obj
li2=[] #second obj
skip_next = False
file_len = len(file1)

for current_row_num,row in enumerate(file1):
    if skip_next:
        skip_next = False
        pass
    else:
        if current_row_num == (file_len-1):
            # alone
            li2.append(row)
        elif row[0]!=file1[current_row_num+1][0]:
            #current row belongs in obj2
            li2.append(row)
        else:
            # current row has same first col value as next row
            # append both to li1
            li1.append(row)
            li1.append(file1[current_row_num+1])
            skip_next=True

print "first obj\n"+str(li1)

print "second obj\n"+str(li2)

アウトアウトは次のように見えます

first obj
[['a', 1, 2], ['a', 3, 4]]
second obj
[['b', 4, 5], ['c', 3, 5]]

それがあなたが探していたものだと思います。順序を気にせず、行に対応する行があるかどうかだけを知りたい場合、コードははるかに単純になります。

于 2013-06-16T09:29:30.347 に答える