[英]Writing a list to new excel xlsx with dataframes
我在寻找将列表写入已加载的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')
该错误意味着Python在cell
的定义中找不到名为row
的参数。 如果我没记错的话,这是xlrd模块。 让我们看一下您试图在此处调用的Sheet.cell()
的API文档。
cell(rowx, colx)
给定行和列中的单元格对象。
看来您只是错误地命名了参数。 将行更改为以下内容可以解决此问题。
s.cell(rowx = r, colx = 1).value = test
毋庸置疑,Python无法猜测您要键入的内容,因此,如果在确定确实存在错误时(例如此处的参数名称)遇到错误,请务必阅读文档并检查是否存在错误错别字。 另外,将来发布所有您可以找到的相关信息,例如功能定义和所使用模块的名称。
这是一个版本,在anaconda之上无需额外安装。 它并没有保持样式,但是您可以将复制/粘贴值恢复为原始xlsx。
大多数excel操纵器在保持原始文件完整方面存在问题。 也有很多解决方法,但是如果您希望它防水,则最终会找到适合您的特定解决方案,或者或多或少地重新编码所有库,因此这是不值得的。
扩展现有数据帧时,熊猫可能很难正确设置,但是总有几种替代方法可以做到。 这是通过assign完成的,因此只需确保数据框的行数足够长即可添加。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.