使用Python2.7中的数据在Excel中创建表

时间:2017-03-24 21:00:31

标签: python excel

我正在尝试将数据导出到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中创建一个满足这些条件的表。建议将不胜感激。

3 个答案:

答案 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

enter image description here