使用数据帧将列表写入新的excel xlsx

时间:2017-12-07 17:27:43

标签: python excel for-loop openpyxl xlrd

我找不到将列表写入已加载的Excel工作表然后将结果保存为xlsx的最佳方法。我希望我的代码做的是获取我创建的列表并将它们放在已加载的工作簿的特定列中。我认为使用数据帧可能有一种更简单的方法,但我不知道如何。理想情况下,我想保存已加载工作簿的格式。

col_test = [1L, 2L, 3L, 4L, 5L]

我的代码就是这个

import xlrt
from xlrd import open_workbook
rb = open_workbook("Excel FDT Master_01_update.xlsx")
s = rb.sheet_by_name('INPUT')
r = 5
for test in col_test:
    s.cell(row = r, column = 1).value = test
    r += 1
rb.save('didthiswork.xlsx')

2 个答案:

答案 0 :(得分:0)

该错误意味着Python无法在row的定义中找到名为cell的参数。如果我没弄错的话,那就是xlrd模块。我们来看看你试图在这里调用的Sheet.cell()的API文档。

cell(rowx, colx)
  

给定行和列中的单元格对象。

您似乎只是错误地命名参数。将行更改为以下内容应解决此问题。

s.cell(rowx = r, colx = 1).value = test

毋庸置疑,Python无法猜测你打算输入什么内容,所以每当你确定它的时候会出现错误,就像这里的参数名一样,请务必阅读文档并检查拼写错误。此外,在将来发布您可以找到的所有相关信息,例如函数定义和您正在使用的模块的名称。

答案 1 :(得分:0)

这是一个在anaconda上没有额外安装的版本。 它不是保持样式,而是你可以通过复制/粘贴值来修复'回到原来的xlsx。

大多数excel操纵器在保持原始文件完整性方面存在问题。也有办法解决这个问题,但是如果你想让它变得防水,你基本上最终会得到一个特定的解决方案,或者或多或少地重新编写所有的库,所以它不值得努力。 / p>

在扩展现有数据帧时,Pandas可能有点棘手,但总有几种方法可以做到这一点。这里完成了assign,所以只需要确保数据框的rowcount足够长,以便人们想要添加。

import pandas as pd

# read the excel
df = pd.read_excel('Geen titel 1.xlsx') # there are options to choose sheet
print('original df')
print(df)
# your data is not valid python syntax so let's assume it's strings
col_test = ['1L', '2L', '3L', '4L', '5L']
new_idx = range(max(len(col_test), len(df.index)))
df = df.reindex(new_idx) # now it will accommodate different lengths
print('reindexed df')
print(df)
df = df.assign(new_col=col_test) # new column added at right side
print('modified df')
print(df)
df.to_excel('the_new.xlsx')

打印输出:

original df
   a  b
0  1  c
1  2  d
2  3  e
reindexed df
     a    b
0  1.0    c
1  2.0    d
2  3.0    e
3  NaN  NaN
4  NaN  NaN
modified df
     a    b new_col
0  1.0    c      1L
1  2.0    d      2L
2  3.0    e      3L
3  NaN  NaN      4L
4  NaN  NaN      5L