八千里路云和月

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

实现功能


 

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   hanX3  阅读(274)  评论(0编辑  收藏  举报
编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 使用C#创建一个MCP客户端
· ollama系列1:轻松3步本地部署deepseek,普通电脑可用
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示