python - 使用多个工作表创建多个 Excel 文件

标签 python excel csv

我有一个表格中的主 csv 文件

col1, col2, col3, col4...
a,    x,    y,    z
a,    x,    y,    z
b,    x,    y,    z
b,    x,    y,    z
..    ..    ..    ..

我想读入这个文件。创建一个新的 Excel 文件,所有值都在 col1==a 和另一个文件,所有值在 col1==b .所以 OutputFilea 看起来像:

col1, col2, col3, col4...
a,    x,    y,    z
a,    x,    y,    z

OutputFileb看起来像

col1, col2, col3, col4...
b,    x,    y,    z
b,    x,    y,    z

我的问题是,我应该逐行使用 csv.reader() 并使用条件来确定应该附加哪个文件,还是应该附加一个带有行的字符串,然后将每个文件写入结束。或者是否有一个模块可以优化这样的流程?

最佳答案

由于您要处理大型数据集,因此最好不要同时在内存中保存太多数据。您可以维护一个由行前缀键入的打开文件的字典,并确保使用 contextlib.ExitStack 正确关闭文件。 .这样做将允许您在处理输入电子表格时延迟打开新文件:

from contextlib import ExitStack

output_files = {}
with open('master.csv', 'r') as master, ExitStack() as output_stack:
    for line in master:
        prefix = line.split(',', 1)[0]
        if prefix not in output_files:
            output_name = 'output' + prefix + '.csv'
            output = output_stack.enter_context(open(output_name, 'w'))
            output_files[prefix] = output
        else:
            output = output_files[prefix]
        print(line, file=output)

鉴于您希望按原样将行复制到输出文件中,我选择不使用 csv模块。如果你想应用更复杂的处理,你当然应该考虑添加它。

关于python - 使用多个工作表创建多个 Excel 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45042064/

相关文章:

python - 导入 Mako 模板失败

python - QSTK EventProfiler 运行时错误

javascript - Node.JS:带有请求模块的简单 GET 抛出 "Possible EventEmitter memory leak detected"

vba - 尝试对多维数组进行切片时类型不匹配

regex - 迭代匹配并替换 VBA RegEx

xml - 解析 XML 并找到字符串的所有实例

python - Discord Bot - "Attribute Error: ' NoneType' 对象没有属性 'strip.'

vba - 使用 VBA 隐藏数据透视表

python - 如何从字典创建 csv

javascript - React中如何让用户下载数据(CSV)?