我有一種建立在以下方式中的數據文件:排序(和排序)不排序
SOURCE_ID,target_id,印象數,點擊
上,我加入以下欄目:
- 對 - 源的元組和目標
- CTR - 基本上點擊/展示
- 下界
- 上限
下限/上限是計算值(這與我的問題無關,但對於好奇的these are the bounds for the Wilson confidence interval。
事情是,我試圖按下限(位置= 6)降序排列列表。嘗試了幾個東西(排序/排序,使用lambda與使用itemgetter,創建一個新的列表w/o標題,並嘗試排序),仍然沒有任何變化。我有下面的代碼。
import csv
from math import sqrt
from operator import itemgetter
#----- Read CSV ----------------------------------------------------------------
raw_data_csv = open('rawdile', "rb")
raw_reader = csv.reader(raw_data_csv)
# transform the values to ints.
raw_data = []
for rownum,row in enumerate(list(raw_reader)):
if rownum == 0: # Header
raw_data.append(row)
else:
r = [] # Col header
r.extend([int(x) for x in row]) # Transforming the values to ints
raw_data.append(r)
# Add cols for pairs (as tuple) and CTR
raw_data[0].append("pair")
for row in raw_data[1:]:
row.append((row[0],row[1])) # tuple
# row.append(float(row[3])/row[2]) # CTR
# ------------------------------------------------------------------------------
z = 1.95996398454005
def confidence(n, clicks):
if n == 0:
return 0
phat = float(clicks)/n
l_bound = ((phat + z*z/(2*n) - z * sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)) # lower bound
u_bound = ((phat + z*z/(2*n) + z * sqrt((phat*(1-phat)+z*z/(4*n))/n))/(1+z*z/n)) # upper bound
return phat, l_bound, u_bound
raw_data[0].extend(["CTR","Lower Bound","Upper Bound"])
for row in raw_data[1:]:
phat, l_bound, u_bound = confidence(row[2],row[3])
row.extend([phat, l_bound, u_bound])
# raw_data[1:].sort(key=lambda x: x[6], reverse=True)
sorted(raw_data[1:], key=itemgetter(6), reverse=True)
outputfile= open('outputfile.csv', 'wb')
wr = csv.writer(outputfile,quoting = csv.QUOTE_ALL)
wr.writerows(raw_data)
raw_data_csv.close()
outputfile.close()
有人可以說出原因嗎? 謝謝!
'sorted()'返回一個*新列表*但您忽略了這一點。你說你也嘗試過'list.sort()';你能告訴我們你是怎麼做到的嗎? – 2014-09-13 15:41:30
嗨 - 謝謝你的回覆。它剛剛在上面註釋掉了。 – Optimesh 2014-09-13 16:02:21
(就在排序()行之上)。如果我需要將sorted()的結果分配給一個新列表 - 在新列表中使用標題的最優雅方式是什麼?我用new_list.insert(0,raw_data [0])。 (哦 - 我用new_list分配排序(),它的工作:)) – Optimesh 2014-09-13 16:09:52