我正在嘗試從 bitbucket 讀取一個 url csv 檔案,我想使用 python 將它讀入 df 。同樣對于我正在做的作業,我無法在本地讀取它,它必須始終來自 bitbucket。
關于如何做到這一點的任何想法?謝謝!
這是我的例子:
url = 'https://bitbucket.EXAMPLE.com/EXAMPLE/EXAMPLE/EXAMPLE/EXAMPLE/raw/wpcProjects.csv?at=refs/heads/master'
colnames=['project_id','project_name','gourmet_url']
df7 = pd.read_csv(url, names = colnames)
但是,輸出不正確,它不是 df 輸出的一些錯誤資料。
uj5u.com熱心網友回復:
您有多種選擇,但您的問題實際上是 2 個獨立的問題。
- 如何從遠程位置獲取檔案(在本例中為 .csv)。
- 如何將 csv 加載到作為 Pandas 資料框的“df”中。
對于#2,您只需import pandas, 并使用df = pandas.read_csv()函式呼叫。看檔案!如果 CSV 檔案在當前目錄中,您將執行 pandas.read_csv('myfile.csv')
CSV 位于某處的服務器上。在這種情況下,它恰好位于從其網站訪問的 bitbucket 服務器上。您可以獲取它并保存在本地,然后訪問它,或者您可以將其獲取到一個臨時位置,將其讀入pandas,然后將其丟棄。您甚至可以將檔案中的資料作為字串讀取到 python 中。然而,有很多選擇并不意味著它們都是有用的。我只是為了完整性而列出它們。查看檔案,pandas 已經在 read_csv() 函式中內置了遠程獲取。如果傳入的路徑是有效的 URL 方案,則在 Pandas 中,
“有效的 URL 方案包括 http、ftp、s3、gs 和檔案”。
如果要本地保存,可以再次使用pandas,使用.write()資料框的方法。
特別適用于 BITBUCKET:您需要確保鏈接到 bitbucket 上的“原始”檔案。獲取原始檔案的鏈接,并將其傳入。默認情況下,用于在 Web 瀏覽器上查看檔案的鏈接不是原始檔案的直接鏈接,它是一個提供該檔案視圖的網頁。獲取原始檔案鏈接,然后將其傳遞給 Pandas。
代碼示例:假設我們想要(我在 bitbucket 上找到的隨機 csv 檔案):https ://bitbucket.org/pedrorijo91/nodejstutorial/src/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/csv/horatse_js.
您需要的是原始檔案的鏈接!單擊 ... 并按“打開原始資料”,我們得到:
https://bitbucket.org/pedrorijo91/nodejstutorial/raw/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv
讓我們詳細看看這個,鏈接到專案名稱是一樣的:https : //bitbucket.org/pedrorijo91/nodejstutorial/
之后,原始檔案位于 raw/
那么它是相同的指標(隨機但相同的字母和數字)db4c991864e65c4d72e98a1dc94e33606e3adde9/
最后,它是相同的目錄結構:
node_modules/levelmeup/data/horse_js.csv
第一個鏈接以 ?at=master 結束,該鏈接由 Web 服務器決議并源自 Web 服務器的 src/。第二個鏈接,原始檔案的實際鏈接,從 raw/ 開始,以 .csv 結束
import pandas as pd
RAW_Bitbucket_URL = 'https://bitbucket.org/pedrorijo91/nodejstutorial/raw/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv'
df = pd.read_csv(RAW_Bitbucket_URL)
上面的代碼對我來說是成功的。
uj5u.com熱心網友回復:
您可能需要下載整個檔案,所以你可以嘗試讓請求用requests,然后讀取它作為一個檔案在pandas.read_csv()。
>>> import pandas as pd
>>> import requests
>>> url = 'https://bitbucket.org/pedrorijo91/nodejstutorial/raw/db4c991864e65c4d72e98a1dc94e33606e3adde9/node_modules/levelmeup/data/horse_js.csv'
>>> r = requests.get(url, allow_redirects=True)
>>> open('file.csv', 'wb').write(r.content)
>>> pd.read_csv('file.csv', encoding='utf-8-sig').head()
ID Tweet Date Via
0 374667940827635712 So, yes, a 100% JS App is 100% awesome 08:59:32, 9-3, 2013 web
1 374656867466637312 "vituperating priests" who rail against JavaSc... 08:15:32, 9-3, 2013 web
2 374654221292806144 Node/Browserify/CJS folks, is there any benefit 08:05:01, 9-3, 2013 Twitter for iPhone
3 374640446955212800 100% JavaScript applications. You may get some 07:10:17, 9-3, 2013 Twitter for iPhone
4 374613490763169792 A node.js app that will order you a sandwich 05:23:10, 9-3, 2013 web
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/371353.html
上一篇:pythonpandas如何將列乘以不同資料幀中的其他值
下一篇:基于多列子組填充缺失值
