Như tôi đã nhận xét, bạn cần sử dụng một đối tượng StringIO và giải mã tức là c=pd.read_csv(io.StringIO(s.decode("utf-8")))
nếu sử dụng các yêu cầu, bạn cần giải mã là .content trả về byte nếu bạn đã sử dụng .text bạn sẽ chỉ cần truyền s như là s = requests.get(url).text
c = pd.read_csv(StringIO(s))
.
Một cách tiếp cận đơn giản hơn là truyền trực tiếp url chính xác của dữ liệu thôread_csv
, bạn không phải truyền một tệp như đối tượng, bạn có thể chuyển một url để bạn không cần yêu cầu gì cả:
c = pd.read_csv("https://raw.githubusercontent.com/cs109/2014_data/master/countries.csv")
print(c)
Đầu ra:
Country Region
0 Algeria AFRICA
1 Angola AFRICA
2 Benin AFRICA
3 Botswana AFRICA
4 Burkina AFRICA
5 Burundi AFRICA
6 Cameroon AFRICA
..................................
Từ các tài liệu :
filepath_or_buffer :
chuỗi hoặc xử lý tệp / StringIO Chuỗi có thể là một URL. Các lược đồ URL hợp lệ bao gồm http, ftp, s3 và tệp. Đối với URL tệp, một máy chủ được mong đợi. Chẳng hạn, một tệp cục bộ có thể là tệp: //localhost/path/to/table.csv
c=pd.read_csv(io.StringIO(s.decode("utf-8")))
nhưng bạn đang nhận được html không phải là tệp csv vì vậy nó sẽ không hoạt động