Como comenté, debe usar un objeto StringIO y descodificar, es decir, c=pd.read_csv(io.StringIO(s.decode("utf-8")))
si usa solicitudes, debe descodificar ya que .content devuelve bytes si usó .text solo necesitaría pasar s como es s = requests.get(url).text
c = pd.read_csv(StringIO(s))
.
Un enfoque más simple es pasar la url correcta de los datos sin procesar directamente read_csv
, no tiene que pasar un archivo como objeto, puede pasar una url para que no necesite solicitudes:
c = pd.read_csv("https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv")
print(c)
Salida:
Country Region
0 Algeria AFRICA
1 Angola AFRICA
2 Benin AFRICA
3 Botswana AFRICA
4 Burkina AFRICA
5 Burundi AFRICA
6 Cameroon AFRICA
..................................
De los documentos :
filepath_or_buffer :
cadena o identificador de archivo / StringIO La cadena podría ser una URL. Los esquemas de URL válidos incluyen http, ftp, s3 y file. Para las URL de archivo, se espera un host. Por ejemplo, un archivo local podría ser file: //localhost/path/to/table.csv
c=pd.read_csv(io.StringIO(s.decode("utf-8")))
pero está recibiendo html de vuelta, no un archivo csv, por lo que no va a funcionar