【问题标题】:Reading csv file from S3 and converting it to xlsx using Python从 S3 读取 csv 文件并使用 Python 将其转换为 xlsx
【发布时间】:2018-07-09 17:03:29
【问题描述】:

我在 S3 中有一个大的 csv 文件,我将它与 S3 中的另一个 csv 文件连接起来。我在 python 中使用 pandas 数据框在 AWS lambda 中执行此操作。我还必须使用相同的 lambda 在 S3 中将连接的数据帧保存为 xlsx 格式。有没有办法做到这一点?

import pandas as pd
import os
import boto3

df1 =pd.read_csv("file1.csv",header=None,lineterminator='\n',sep='\t', error_bad_lines=False, encoding='ISO-8859-1') # file is in s3.

df2 = pd.read_csv("file2.csv",sep='\t',header=None)

df3 = pd.concat([df2,df1]) 

我想将 df3 对象中的结果保存为 s3 中的 excel 文件。

注意:我已经尝试过 df.to_excel()。但由于我需要将其直接保存到 s3,所以它不起作用。

【问题讨论】:

  • 你试过df.to_excel吗?
  • 是的,df.to_excel 接受一个需要文件路径的 ExcelWriter 对象。我已经将存储在 s3 中的文件的路径放在了那里,但这不起作用。所以我不确定这是否是写作方式
  • 我不确定你在期待什么。 documentation 表示它接受文件路径或现有的 ExcelWriter。为什么它可以与 s3 对象键一起使用?
  • 我想直接保存到s3。转换 csv 并直接写入 s3 以节省处理时间。该文件将至少为 500MB

标签: python pandas amazon-s3 aws-lambda xlsx


【解决方案1】:

您可以通过以下代码做到这一点:

writer = pd.ExcelWriter('test.xlsx')
df_new.to_excel(writer)

【讨论】:

  • 我想将它直接保存到 s3,所以我应该给 S3 文件位置而不是 'test.xlsx'?我的要求是直接保存到s3。
【解决方案2】:

试试df3.to_excel('filename.xlsx')

【讨论】:

    猜你喜欢
    • 2019-12-04
    • 1970-01-01
    • 2017-05-02
    • 2018-07-22
    • 2019-10-09
    • 2013-05-19
    • 1970-01-01
    • 2015-07-04
    • 1970-01-01
    相关资源
    最近更新 更多