【问题标题】:Format file into an Excel sheet将文件格式化为 Excel 工作表
【发布时间】:2018-03-21 19:49:38
【问题描述】:

我是 python 的新程序员,我需要你的帮助。如果我在 chrome https://api.mysportsfeeds.com/v1.1/pull/nhl/2016-2017-regular/cumulative_player_stats.{format} 中加载以下网址,其中{format} 可能是csvjson 格式,那么一旦下载并打开,该文件已经格式化。如何使用pandasopenpyxl 将其转换为Excel 工作表?

更新

import base64
import requests
import json

USERNAME, PASSWORD = 'notworking', 'notworking'

def send_request():
    # Request

    try:
        response = requests.get(
            url="https://api.mysportsfeeds.com/v1.1/pull/nhl/2017-2018-regular/cumulative_player_stats.csv", 
            params={
                "fordate": "20171009"
            },
            headers={
                "Authorization": "Basic " +
                     base64.b64encode('{}:{}'.format(USERNAME,PASSWORD)\
                                      .encode('utf-8')).decode('ascii')
            }
        )
        print('Response HTTP Status Code: {status_code}'.format(
            status_code=response.status_code))
        print('Response HTTP Response Body: {content}'.format(
            content=response.content))
    except requests.exceptions.RequestException:
        print('HTTP Request failed')

    return response


import pandas as pd
import io

test = send_request().content
df = pd.read_csv(io.StringIO(test.decode('utf-8')))
writer = pd.ExcelWriter('/home/jeremie/Projects/Work_Projects/NHL_project/output.xls')
df.to_excel(writer, 'Sheet1')

我正在努力解决我的代码似乎可以正常工作但没有创建文件的事实。

【问题讨论】:

  • 欢迎来到 StackOverflow。在 SO 中,需要显示您已经尝试过的一段代码,并且您不能再进一步,否则您的问题将被描述为太宽泛
  • @YannisP。好的,我会尝试一下,但到目前为止对我来说很难。
  • 在您的情况下,使用 pandas read_csv 将 csv 读取到 DataFrame,然后使用 DataFrame 的方法 to_excel 将其写入 Excel。
  • 我们很难回答,尤其是因为数据是从需要凭据的 API 提供的
  • @YannisP。请注意,一旦连接到 mysportsfeeds,即可免费下载。

标签: python json excel pandas csv


【解决方案1】:

您需要添加一个最终的.save() 以关闭 Pandas Excel 编写器,然后输出 Excel 文件,例如

import pandas as pd
import io
import os

# Set the working folder to the same folder as the script
os.chdir(os.path.dirname(os.path.abspath(__file__)))

test = send_request().content
df = pd.read_csv(io.StringIO(test.decode('utf-8')))
writer = pd.ExcelWriter('output.xls')
df.to_excel(writer, 'Sheet1')
writer.save()

通过这种方式设置工作文件夹,它应该在 Windows PC 上也能正常工作。

【讨论】:

  • 我对你有最后的要求。我为一个朋友交付了这个项目,但他将使用 Windows 而不是 Linux。而不是使用绝对路径,我怎么能设置当前目录+'output.xls'文件。是sys.path吗?您能否修改问题以使其有效。我想我会接受你的回答。
  • 添加完整路径主要是为了确保文件在您预期的位置结束。您可以只返回文件名并重新测试。
  • 您能否将上次更新调整为writerwriter = pd.ExcelWriter(os.chdir(os.path.dirname(os.path.abspath('output.xls'))))??
  • 真强大的马丁!!如果您支持我的问题,我将能够支持您的答案。 ;) 我需要 15 分才能做到。
猜你喜欢
  • 1970-01-01
  • 2010-10-03
  • 2012-11-02
  • 2020-08-21
  • 1970-01-01
  • 2019-06-25
  • 1970-01-01
  • 1970-01-01
  • 2014-10-01
相关资源
最近更新 更多