Как я уже говорил, вам нужно использовать объект StringIO и декодировать, т. е. c=pd.read_csv(io.StringIO(s.decode("utf-8")))
, если вы используете запросы, вам нужно декодировать, поскольку .content возвращает bytes , если вы использовали .текст, который вам просто нужно будет пройти s как s = requests.get(url).text
c = pd.read_csv(StringIO(s))
.
Простейший подход - передать правильный URL-адрес raw данных непосредственно на read_csv
, вам не нужно передавать файл как объект, вы можете передать URL-адрес так что вам вообще не нужны запросы:
c = pd.read_csv("https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv")
print(c)
Выход:
Country Region
0 Algeria AFRICA
1 Angola AFRICA
2 Benin AFRICA
3 Botswana AFRICA
4 Burkina AFRICA
5 Burundi AFRICA
6 Cameroon AFRICA
..................................
Из docs :
filepath_or_buffer:
строка или дескриптор файла / StringIO Строкой может быть URL. Допустимые схемы URL включают http, ftp, s3 и файл. Для URL-адресов файлов ожидается хост. Например, локальный файл может быть файлом: //localhost/path/to/table.csv