簡體   English   中英

從 for 循環寫入多個 CSV 文件

[英]Writing to multiple CSV files from a for-loop

我有一個for loop獲取股票代碼的 for 循環和另一個用於獲取股票數據的 for 循環。 現在我正在嘗試創建 csv 文件,該文件將從第一個 for 循環中獲取股票名稱數據並將股票數據添加到 CSV 文件中。

stock_data = []
with open('Nifty 50 Scrapped data.csv') as csvfile:
    stockticker_data = csv.reader(csvfile, delimiter=' ')
    for row in stockticker_data:
        # print(row)
        all_data = []
        for ticker in row:
            stock_data.append(web.get_data_yahoo(ticker, '1/1/2018', '1/1/2019'))
            with open(ticker, 'w') as f:
                f = open(ticker,'w')
                f.write(stock_data)
                f.close()

我收到以下錯誤:

    f.write(stock_data)
TypeError: write() argument must be str, not list

output 用於print(stock_data)

[                   High          Low  ...     Volume    Adj Close
Date                                  ...                        
2018-01-01  1165.000000  1138.099976  ...   591349.0  1127.366211
2018-01-02  1150.000000  1134.050049  ...   516171.0  1126.479004
2018-01-03  1149.000000  1135.300049  ...   593809.0  1125.641235
2018-01-04  1178.000000  1145.900024  ...   729965.0  1155.361816
2018-01-05  1192.000000  1167.449951  ...  1151320.0  1168.373901
...                 ...          ...  ...        ...          ...
2018-12-27  1384.750000  1354.300049  ...  2174090.0  1362.613403
2018-12-28  1383.000000  1359.000000  ...  1705033.0  1356.160278
2018-12-31  1378.000000  1367.300049  ...   698593.0  1363.159546
2019-01-01  1379.699951  1358.599976  ...   664707.0  1361.670410
2019-01-02  1386.849976  1361.599976  ...  1233780.0  1373.335693

[248 rows x 6 columns]]
[                   High          Low  ...     Volume    Adj Close
Date                                  ...                        
2018-01-01  1165.000000  1138.099976  ...   591349.0  1127.366211
2018-01-02  1150.000000  1134.050049  ...   516171.0  1126.479004
2018-01-03  1149.000000  1135.300049  ...   593809.0  1125.641235
2018-01-04  1178.000000  1145.900024  ...   729965.0  1155.361816
2018-01-05  1192.000000  1167.449951  ...  1151320.0  1168.373901
...                 ...          ...  ...        ...          ...
2018-12-27  1384.750000  1354.300049  ...  2174090.0  1362.613403
2018-12-28  1383.000000  1359.000000  ...  1705033.0  1356.160278
2018-12-31  1378.000000  1367.300049  ...   698593.0  1363.159546
2019-01-01  1379.699951  1358.599976  ...   664707.0  1361.670410
2019-01-02  1386.849976  1361.599976  ...  1233780.0  1373.335693

此錯誤告訴您stock_data是一個list ,而write()方法需要一個str 如何解決知道從web.get_data_yahoo()返回的數據是pd.DataFrame的問題? 我們可以像這樣使用pd.to_csv來做到這一點:

stock_data = []
with open('Nifty 50 Scrapped data.csv') as csvfile:
    stockticker_data = csv.reader(csvfile, delimiter=' ')
    for row in stockticker_data:
        # print(row)
        all_data = []
        for ticker in row:
            stock_data.append(web.get_data_yahoo(ticker, '1/1/2018', '1/1/2019'))
            for df in stock_data:
                df.to_csv(ticker, header=None, index=None, sep=' ', mode='a')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM