【问题标题】:Convert text data from requests object to dataframe with pandas使用 pandas 将文本数据从请求对象转换为数据框
【发布时间】:2017-01-05 22:02:33
【问题描述】:

使用请求我正在创建一个 .csv 格式的对象。然后如何使用 pandas 将该对象写入 DataFrame?

获取文本格式的请求对象:

import requests
import pandas as pd
url = r'http://test.url' 
r = requests.get(url)
r.text  #this will return the data as text in csv format

我试过了(不起作用):

pd.read_csv(r.text)
pd.DataFrame.from_csv(r.text)

【问题讨论】:

  • 不看数据很难回答。
  • 可能您需要将响应数据保存到文件并检查文件内容。然后将文件读取到 csv,检查这种方法是否有效。如果不是,那么数据中有问题
  • stackoverflow.com/questions/32400867/pandas-read-csv-from-url/…,除非您发布一些允许您访问内容的数据,否则无需请求
  • @PadraicCunningham,我认为你对请求的错误,它的 urllib2 或请求。嘘,urllib2 有安全漏洞。允许文件访问。所以,请求更安全。
  • @Padraic,我在我的问题中省略了这部分,但我需要在我的请求中包含一个特殊的标头格式,这就是我使用请求而不是直接导入 url 的原因。 headers = {'user1': 'AppInterface'}

标签: python csv pandas dataframe python-requests


【解决方案1】:

试试这个

import requests
import pandas as pd
import io

urlData = requests.get(url).content
rawData = pd.read_csv(io.StringIO(urlData.decode('utf-8')))

【讨论】:

  • 我们可以将数据帧输出转换为 URL。以 url 的形式显示数据帧表输出:任何人都可以通过打开该 url 访问它并查看数据帧数据?
【解决方案2】:

我认为您可以将read_csvurl 一起使用:

pd.read_csv(url)

filepath_or_buffer:str、pathlib.Path、py._path.local.LocalPath 或任何具有 read() 方法的对象(例如文件句柄或 StringIO)

字符串可以是 URL。有效的 URL 方案包括 http、ftp、s3 和文件。对于文件 URL,需要一个主机。例如,本地文件可以是文件://localhost/path/to/table.csv

import pandas as pd
import io
import requests

url = r'http://...' 
r = requests.get(url)  
df = pd.read_csv(io.StringIO(r))

如果不起作用,请尝试更新最后一行:

import pandas as pd
import io
import requests

url = r'http://...' 
r = requests.get(url)  
df = pd.read_csv(io.StringIO(r.text))

【讨论】:

    【解决方案3】:

    使用“read_csv with url”有效:

    import requests, csv
    import pandas as pd
    url = 'https://arte.folha.uol.com.br/ciencia/2020/coronavirus/csv/mundo/dados-bra.csv'
    corona_bra = pd.read_csv(url)
    print(corona_bra.head())
    

    【讨论】:

    • 我猜这会取决于请求的URL,我需要将参数传递给get(),例如requests.get(url,params=dict())
    【解决方案4】:

    如果url没有认证可以直接使用read_csv(url)

    如果您有身份验证,您可以使用 request 将其取消选择并打印 csv 并确保结果为 CSV 并使用 panda。

    您可以直接使用导入 导入csv

    【讨论】:

      猜你喜欢
      • 2018-08-01
      • 2020-03-27
      • 2018-05-17
      • 2018-12-19
      • 2017-10-15
      • 2015-05-16
      • 1970-01-01
      • 2018-10-27
      • 2019-08-31
      相关资源
      最近更新 更多