微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Python中将多个CSV文件合并到电子表格的单独选项卡中

我有一个代码,可以在目录中生成多个CSV文件.我想在excel中生成一个报告,该报告将包含CSV文件作为单独的选项卡.
我使用了以下代码

import pandas as pd
import os
import csv
import glob    
path = "/MyScripts"
all_files = glob.glob(os.path.join(path, "*.csv"))
df_from_each_file = (pd.read_csv(f) for f in all_files)
df_from_each_file.to_excel(writer, sheet_name='ReturnData.csv')
writer.save()

但它给出了以下错误
AttributeError:’generator’对象没有属性’to_excel’
不知道我哪里错了.我是否需要导入任何特定的库来解决问题?

Python版本是2.7

解决方法:

这里有两个问题:

>您的生成器表达式允许您懒惰地迭代数据框对象.您无法将生成器表达式导出到Excel文件.
>您的sheet_name参数是一个常量.要导出到多个工作表,您需要为每个工作表指定不同的名称.

为此,您可以使用简单的for循环:

df_from_each_file = (pd.read_csv(f) for f in all_files)

for idx, df in enumerate(df_from_each_file):
    df.to_excel(writer, sheet_name='data{0}.csv'.format(idx))

您的工作表将命名为data0.csv,data1.csv等.如果您需要文件名作为工作表名称,则可以重构逻辑并使用os模块从路径中提取文件名:

import os

for f in all_files:
    df = pd.read_csv(f)
    df.to_excel(writer, sheet_name=os.path.basename(f))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐