2016-09-20 56 views
0

我正在使用requests.get下載csv文件。我只需要這個csv文件中的兩列,而列的其餘部分對我來說是無用的。目前我正在使用使用requests.get下載csv的特定列。

r = requests.get(finalurl, verify=False,stream=True) 
shutil.copyfileobj(r.raw, csvfile) 

獲取完整的csv文件。

但是,我只想從csv文件下載兩列。我可以隨時下載整個內容,然後採取必要的措施。

只是檢查是否有一種方式來獲得特定的列使用requests.get 如:我只需要dateAdj.close從這個CSV文件http://chart.finance.yahoo.com/table.csv?s=AAPL&a=7&b=20&c=2016&d=8&e=20&f=2016&g=d&ignore=.csv

找不到類似的問題,如果以前提過類似的問題,請直接告訴我。

感謝

+0

你可以添加你有的任何代碼嗎? – EoinS

+0

你不能。這基本上等同於說「我只想下載圖片的綠色部分」。這只是沒有意義。你必須下載整個文件然後處理它。 – davidism

回答

1

您可以使用與NumPy和Loadtext:

import numpy as np 
b=np.loadtxt(r'name.csv',dtype=str,delimiter=',',skiprows=1,usecols=(0,1,2)) 

這將創建只有您選擇的列數據的數組。

2

試試pandas,在你的情況下,熊貓更方便。

In [2]: import pandas.io.data as web 
    ...: aapl = web.DataReader("AAPL", 'yahoo','2016-7-20','2016-8-20') 
    ...: aapl['Adj Close'] 
    ...: 
    ...: 
Out[2]: 
Date 
2016-07-20  99.421412 
2016-07-21  98.894269 
2016-07-22  98.128421 
2016-07-25  96.815526 
2016-07-26  96.149138 
2016-07-27 102.395300 
2016-07-28 103.777810 
2016-07-29 103.648513 
2016-08-01 105.478603 
2016-08-02 103.917063 
2016-08-03 105.220002 
2016-08-04 105.870003 
2016-08-05 107.480003 
2016-08-08 108.370003 
2016-08-09 108.809998 
2016-08-10 108.000000 
2016-08-11 107.930000 
2016-08-12 108.180000 
2016-08-15 109.480003 
2016-08-16 109.379997 
2016-08-17 109.220001 
2016-08-18 109.080002 
2016-08-19 109.360001 
Name: Adj Close, dtype: float64 
-1

您不能只下載某些列,您可以使用常規財務api。您不必下載一氣呵成要麼雖然然後更換之後的所有數據,您可以分析,當您去:

import csv 

final_url = "http://chart.finance.yahoo.com/table.csv?s=AAPL&a=7&b=20&c=2016&d=8&e=20&f=2016&g=d&ignore=.csv" 
with open("out.csv", "w") as out: 
    writer = csv.writer(out) 
    data = requests.get(final_url, verify=False, stream=True).iter_lines() 
    headers = fieldnames = next(data).split(",") 
    reader = csv.DictReader(data, fieldnames=headers) 
    writer.writerow(["Date", "Adj Close"]) 
    for row in reader: 
     writer.writerow([row["Date"], row["Adj Close"]]) 

你可以,如果列的順序是保證剛指數從未改變,但使用DictReader讓你按鍵訪問,所以順序是不相關的。我認爲,假定數據中不會嵌套任何新行也是安全的。