【发布时间】:2020-04-20 07:05:58
【问题描述】:
我正在尝试编写一个接受数据和文件名作为参数的函数,前者是以后者的名称保存的数据。我想将它保存在一个函数中,而不是像我通过test3 使OutWriter3 工作那样诉诸列表理解。
import numpy as np
import pandas as pd
data_a = np.random.randint(100, size=21)
data_b = np.random.randint(200, size=21)
def OutWriter1(data, filename):
for d, f in zip(data, filename):
out = pd.DataFrame(d)
return out.to_excel(f, header=False, index=False)
def OutWriter2(data, filename):
out = []
for d, f in zip(data, filename):
df = pd.DataFrame(d)
out.append(df)
out = pd.DataFrame(out)
return out.to_excel(f, header=False, index=False)
def OutWriter3(data, filename):
out = pd.DataFrame(data)
return out.to_excel(filename, header=False, index=False)
test1 = OutWriter1([data_a, data_b], ['data_a_1.xlsx', 'data_b_1.xlsx'])
test2 = OutWriter2([data_a, data_b], ['data_a_2.xlsx', 'data_b_2.xlsx'])
test3 = [OutWriter3(i, j) for i, j in zip([data_a, data_b], ['data_a_3.xlsx', 'data_b_3.xlsx'])]
来自OutWriter1 的data_a_1.xlsx 是正确的,但data_b_1.xlsx 不存在,data_a_2.xlsx 完全错误,data_b_2.xlsx 也不存在。但是,data_a_3.xlsx 和 data_b_3.xlsx 是正确的。
受another question 的启发,我还尝试将data_a 和data_b 保存为单个Excel 文件中的工作表,但运气不佳(AttributeError: 'list' object has no attribute 'write')。
def OutWriter4(data, filename):
data = pd.DataFrame(data)
with pd.ExcelWriter(filename) as writer:
for n, df in enumerate(data):
df.to_excel(writer, 'sheet%s' % n)
writer.save()
test4 = OutWriter4([data_a, data_b], ['data_a_4.xlsx', 'data_b_3.xlsx'])
- 是否有一种优雅的方法来创建一个函数,该函数在提供数据和文件名的情况下创建 Excel 文件?
- 是否还有一种优雅的方法可以创建一个函数,将不同的数据写入单个 Excel 文件中的指定工作表?
【问题讨论】: