我正在尝试将数据导出到excel文件。我的问题是我的数据来自itertools.combination,我无法弄清楚如何将所有组合及其数据导出到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
我希望能够将每个组合的'bond'导出到excel表中。如果我为组合添加另一个坐标,即另一个“碳”,excel表将能够增长。 excel表格看起来像这样:
"Carbon pair" "Bond"
Carbon 1 to Carbon 2 2
Carbon 2 to Carbon 3 3
我是Python的新手,我不确定如何将任何内容导出到excel中,更不用说在excel中创建一个满足这些条件的表。建议将不胜感激。
答案 0 :(得分:1)
首先,您似乎目前不需要任何Excel功能,因此我猜您可以使用csv文件作为导出。这更容易使用。有关详细信息,请参阅Python 2.7 CSV doc。可以在excel中轻松导入csv文件。
如果你真的需要创建一个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 -
如果您使用此矩阵表示法,那么您将能够更快地访问数据。
答案 1 :(得分:0)
我不确定如何直接帮助您,但我建议您查看XLWT module。文档可能很难找到,但有些Google会搜索&#34; XLWT&#34;和#34; Python Excel&#34;应该引导你解释一下。
答案 2 :(得分: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