내가 언급했듯이 StringIO 객체를 사용해야하고 c=pd.read_csv(io.StringIO(s.decode("utf-8")))
요청 을 사용하는 경우 디코딩 해야합니다. 즉 , .text를 사용하면 .content가 바이트를 반환하므로 디코딩 해야합니다 s = requests.get(url).text
.c = 그대로 s를 전달하면됩니다 pd.read_csv(StringIO(s))
.
더 간단한 방법은 정확한 URL을 전달하는 원시 직접 데이터 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
..................................
로부터 문서 :
filepath_or_buffer :
문자열 또는 파일 핸들 / StringIO 문자열은 URL 일 수 있습니다. 유효한 URL 체계에는 http, ftp, s3 및 file이 포함됩니다. 파일 URL의 경우 호스트가 필요합니다. 예를 들어, 로컬 파일은 : //localhost/path/to/table.csv 파일 일 수 있습니다.
c=pd.read_csv(io.StringIO(s.decode("utf-8")))
하지만 csv 파일이 아닌 html을 다시 가져 와서 작동하지 않을 것입니다.