2014-12-22 52 views
0

我認爲我對python專家有個相當簡單的問題。經過很多努力,我把代碼放在一起。我正在打開一個excel文件,將其轉換爲列表列表並向該列表列表中添加一列。現在我想重新命名並重新計算添加的列的行數。我如何編寫腳本,即使列數可能有所不同,我也總是採用列表列表的最後一列。在python中計算並添加列

import xlrd 
file_location = "path" 
workbook = xlrd.open_workbook(file_location) 
sheet = workbook.sheet_by_index(0) 
data = [[sheet.cell_value(r, c) for c in range(sheet.ncols)] for r in range(sheet.nrows)] 
data = [x + [0] for x in data] 
+0

你是什麼意思的'將列添加到列表中'?你的意思是你添加一個元素到內部列表中? – Evert

+0

我從這裏得到它:http://stackoverflow.com/questions/2002415/how-can-i-add-an-additional-row-and-column-to-an-array 他稱之爲添加一列。不知道這是否正是我所做的,但似乎是我想要的。 – Zuenie

回答

0

我發現了一個更方便,更靈活的方式調整最後一列的值。

counter = 0 
for list in data: 
    counter = counter + 1 
    if counter == 1: 
     value = 'Vrspng' 
    else: 
     value = counter 
    list.append(value) 
1

如果你有一個名爲calculate_value,需要一個行並返回值,該行的功能,你可以做這樣的:

def calculate_value(row): 
    # calculate it... 
    return value 

def add_calculated_column(rows, func): 
    result_rows = [] 
    for row in rows: 
     # create a new row to avoid changing the old data 
     new_row = row + [func(row)] 
     result_rows.append(new_row) 
    return result_rows 

data_with_column = add_calculated_column(data, calculate_value) 
+0

這看起來像我想要的。謝謝。現在就去測試它。 – Zuenie

+0

好的。這已經幫助了很多。我有能力在最後一列重新計算價值。但是,我希望我的第一行具有與列的第二行不同的值。第一行是整數,第二行是計算值。 – Zuenie