0

次の方法でデータを含むCSVファイルがあります

"/file/Puppies";"$2,166.74";"2,502";"5.55%";"$48.10";"152,844";"45,044"
"/file/Kittens";"$1,498.59";"1,618";"3.54%";"$32.75";"157,560";"45,764"
"/file/Puppies/pup";"$1,174.92";"1,451";"3.72%";"$30.10";"116,268";"39,038"

そして、最初の列が似ている場合、2番目の列を結合したいのですが、残りの値は問題ではありません。

したがって、この例では、列 2 の/file/Puppiesとの/file/Puppies/pup値が最終出力で一緒に追加されます。

類似とは、たとえば/file/Puppies//file/Puppies/1/file/Puppies/ruすべてが類似していることを意味します。しかし /file/Kittens はそうではありません。

始める方法についてのアイデアはありますか?

4

1 に答える 1

0

値を保持するディクショナリを構築し、各行の各ディクショナリ値に追加します

Values = {}
from csv import reader
with open('CSVFile.csv', 'r') as filehandle :
    reader = reader(filehandle,delimiter=';')
    for row in reader :
        Class = row[0].split('/')[2]
        Value = float(row[1].strip('$').replace(',', ''))
        if Class in Values :
            Values[Class] = Values[Class] + Value
        else :
            Values[Class] = Value
print Values

ここで、「類似」とは何を意味するのかについていくつかの単純化した仮定を立てました。つまり、「/file/」に続き、そのフィールドの終わりまたは次の「/」まで続く最初のものを意味すると仮定します。 . それを私は と呼んでいClassます。

次に、データから 2 番目の列を取得し、「$」を取り除き、コンマを削除し、浮動小数点数に変換して値を見つけます。

次に、辞書を作成しているので、すでにパピーなどを見たことがあるかどうかをテストする必要があります。その場合は、前の値に加算してください。そうでない場合は、値を設定します。

于 2013-03-05T21:36:32.003 に答える