csvファイルからデータを読み取り、そのデータの一部を操作する次のコードがあり、変更されたデータをデータフレームに入れたいと考えています。辞書に追加することを考えていましたが、実際にこれをどのように行うべきかわかりません。
次の CSV データ ファイルをデータ ソースとして使用します。
"17",20.2147418139502,20,20,20.8652568117822
"6",19.9412500131875,13,19,20.4982216893409
"4",16.3402085164562,6,18,16.729284141648
"11",15.9562389152125,11,17,16.4769352577916
"19",13.2889788383618,12,16,13.8285694613856
"15",11.7133173411712,1,15,11.7133173411712
csv データ セットの最初の列は無視します。
再計算後、私のデータは次のようになります (データ操作を理解するには、以下のコードを参照してください)。
15.9562389152125 11 12.0 16.4769352577916 16.4958295382
13.2889788383618 12 13.0 13.8285694613856 13.8459505145
11.7133173411712 1 2.0 11.7133173411712 11.863832339
9.68207331560552 14 15.0 10.2551373334446 10.2701189451
9.56895540188998 19 20.0 10.2083322023664 10.2194703997
7.30124705657363 2 3.0 7.45176205440562 7.53980768393
6.83169608190656 5 6.0 7.18118108407457 7.2207717071
6.40446470770985 4 5.0 6.70549470337383 6.75394970988
次に、列 4、列 3、および列 5 で逆ソートします。
次に、以下に示すように、列 5 に基づいて最後にランク列を追加します。
15.9562389152125 11 12.0 16.4769352577916 16.4958295382 1
13.2889788383618 12 13.0 13.8285694613856 13.8459505145 2
11.7133173411712 1 2.0 11.7133173411712 11.863832339 3
9.68207331560552 14 15.0 10.2551373334446 10.2701189451 4
9.56895540188998 19 20.0 10.2083322023664 10.2194703997 5
7.30124705657363 2 3.0 7.45176205440562 7.53980768393 6
6.83169608190656 5 6.0 7.18118108407457 7.2207717071 7
6.40446470770985 4 5.0 6.70549470337383 6.75394970988 8
これを実現するためにどのようなデータ構造を使用すればよいかわかりません。
次のコードを試しました:
def increaseQuantityByOne(self, fileLocation):
rows = csv.reader(open(fileLocation))
rows.next()
print "PricePercentage\t" + "OldQuantity\t" + "newQuantity\t" + "oldCompScore\t" + "newCompScore"
priceCompValue = []
priceCompRank = []
newPriceCompValue = []
newPriceCompRank = []
for row in rows:
newQuantity = float(row[2]) + 1.0
newCompetitiveScore = float(row[1]) + float(math.log(float(newQuantity), 100))
print row[1] + "\t", str(row[2])+"\t", str(newQuantity) + "\t", str(row[4]) + "\t", newCompetitiveScore
priceCompValue.append(float(row[4]))
priceCompRank.append(int(row[3]))
newPriceCompValue.append(newCompetitiveScore)
priceCompValue.sort(reverse=True)
priceCompRank.sort(reverse=True)
newPriceCompValue.sort(reverse=True)
for item in priceCompValue:
print item
for item in priceCompRank:
print item
for item in newPriceCompValue:
print item