八千里路云和月

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

实现功能


 

excel表格中有4列数,分别为RMF计算得到的 β,γ,势能面及组态,需要挑选出相同 β 值下势能面最低时的组态。为了减小数据量,先将 β 值保留两位小数。 

代码


 

 1 import xlrd
 2 import xlwt
 3 
 4 # read xls file
 5 readfile = xlrd.open_workbook('./beta-gamma-constrain.xlsx')
 6 readsheet = readfile.sheet_by_name('Sheet1')
 7 
 8 beta = readsheet.col_values(0)
 9 gamma = readsheet.col_values(1)
10 energy = readsheet.col_values(2)
11 config = readsheet.col_values(3)
12 '''
13 print(beta)
14 print(gamma)
15 print(energy)
16 print(config)
17 '''
18 beta_2f = [round(x, 2) for x in beta]
19 
20 beta_gamma = dict(zip(beta_2f, gamma))
21 beta_energy = dict(zip(beta_2f, energy))
22 beta_config = dict(zip(beta_2f, config))
23 
24 for i in range(0, len(beta_2f)):
25     if energy[i] < beta_energy[beta_2f[i]]:
26         beta_gamma[beta_2f[i]] = gamma[i]
27         beta_energy[beta_2f[i]] = energy[i]
28         beta_config[beta_2f[i]] = config[i]
29     else:
30         continue
31 
32 print(beta_gamma)
33 print(beta_energy)
34 print(beta_config)
35 
36 # write xls file
37 write_excl = xlwt.Workbook(encoding='utf-8')
38 excl_sheet = write_excl.add_sheet('Sheet1')
39 
40 j = 0
41 for key, value in beta_gamma.items():
42     excl_sheet.write(j, 0, key)
43     excl_sheet.write(j, 1, value)
44     excl_sheet.write(j, 2, beta_energy[key])
45     excl_sheet.write(j, 3, beta_config[key])
46     j = j+1
47 
48 write_excl.save("xx.xls")

用到的库

  • xlrd,读取 excel 文件的库,可以读取 xls 和 xlsx 文件。
  • xlwt,写入 excel 文件的库,只能写成 xls 文件。

思路

将数据按列读出,写入 4 个列表,再组装为字典。由于字典中的 key 值是唯一的,因此该过程只是得到了 β-势能面的字典,但势能面的值不是最小的,需要遍历判断再赋值。最后将结果写入新的 excel 表格。

posted on 2020-06-14 15:13  hanX3  阅读(279)  评论(0)    收藏  举报