2017-03-24 71 views
0

我想將我的數據導出到Excel文件。我的問題是,我的數據來自itertools.combination,我無法弄清楚如何將所有的組合和他們的數據導出到Excel文件使用Python2.7中的數據在Excel中創建表格

我的子集來自看起來像

carbon_1 xcoordinate ycoordinate zcoordinate 
輸入文件

對於碳

爲了參考的n個,我的代碼是

subset = cmd[['carbon','x_coord', 'y_coord','z_coord']] 
coordinate_values = [tuple(x) for x in subset.values] 

atoms = coordinate_values 
atomPairs = itertools.combinations(atoms, 2) 

atoms_dict = {k:"carbon_{}".format(i) for i,k in enumerate(atoms,1)} 
    print("Computing distance between {} and {}".format(atoms_dict[pair[0]],atoms_dict[pair[1]])) 

我然後有一個簡單的定義來計算距離d,並且我的代碼到底是

if d >= 1.4 and d < 1.6: 
    bond = 1 
elif d >= 1.2 and d < 1.4: 
    bond = 2 
elif d >= 1 and d < 1.2: 
    bond = 3 
else: 
    bond = 0 

的我的代碼對於每個組合的輸出是

Computing distance between carbon_1 and carbon_2 
2 

我想能夠爲每個組合的「鍵」導出到Excel工作表。如果我爲組合添加另一個座標,又稱「碳」,Excel表格將能夠增長。 Excel工作表看起來是這樣的:

"Carbon pair"     "Bond" 
Carbon 1 to Carbon 2    2 
Carbon 2 to Carbon 3    3 

我很新的Python和我不確定如何將任何東西導出到Excel中,更不用說在Excel中創建一個表,將滿足這些條件。建議將不勝感激。

+0

'openpyxl'是一個很好的Python模塊:https://openpyxl.readthedocs.io/en/default/ – ryugie

回答

1

起初,看來,你目前不需要任何的Excel功能,所以我想你可以使用一個CSV文件作爲出口。這更容易使用。有關更多信息,請參閱Python 2.7 CSV doc。 csv文件可以很容易地導入到Excel中。

如果你真的需要創建一個Excel文件,那麼你應該看看XlsxWriter。我前段時間使用過,使用起來非常簡單。

爲了能夠增加你的表,你應該考慮使用一個矩陣來存儲您的日期。因此,而不是使用這樣的:

"Carbon pair"     "Bond" 
Carbon 1 to Carbon 2    2 
Carbon 2 to Carbon 3    3 

更好的方式來拓展您的碳庫是這樣的嘗試:

Bond  Carbon1  Carbon2  Carbon3 
Carbon1  -   5   1 
Carbon2  3   -   4 
Carbon3  5   1   - 

如果你使用這個矩陣符號,那麼你就可以訪問您的數據更快。

0

我不知道如何直接幫助你,但我建議檢查出的XLWT module。文檔可能很難找到,但有些Google搜索「XLWT」和「Python Excel」應該引導您進行一些解釋。

0

注:這個問題是開放式的,以便答案可能是基於經驗來定。沒有比其他解決方案更好的解決方案。

我用openpyxl Excel的工作,因爲我可以在最新xlsx格式保存文件。

您可以通過安裝它

pip install openpyxl 

因爲我沒有所有的代碼,我假設你將能夠得到的目錄列表,或某種格式,逗號分隔和所需要的數據可以被操縱。

例如,我有列表中的數據列表如下。 頭信息:

headers = ["Carbon pair","Bond"] 

和碳數據

carbon_data = [["Carbon 1 to Carbon 2",2],["Carbon 2 to Carbon 3",3]] 

一旦你有,你可以創建一個新的工作簿,就像您在Excel會處理數據。 演示代碼:

from openpyxl.workbook import Workbook 

headers = ["Carbon pair","Bond"] 

carbon_data= [["Carbon 1 to Carbon 2",2],["Carbon 2 to Carbon 3",3]] 
dest_filename = 'carbon_data.xlsx' 

#Open new workbook 
wb = Workbook() 

ws1 = wb.active 
ws1.title = "carbon_pairs_bonds" 

#Add headers 
ws1.append(headers) 

#Add data 
for row in carbon_data: 
    ws1.append(row) 

#Save workbook 
wb.save(filename = dest_filename) 

一旦你創建了一個文件,你可以添加,操作列,行,就像您在Excel會。 openpyxl網站有詳細的教程和例子。 SO中有一個openpyxl標籤,您可以參考其中的問題。

希望這會有所幫助。 carbon_data.xlsx

enter image description here

相關問題