2016-04-11 40 views
-2

Merhaba Bir listede genel bir terim hakkında yineleme ve bir dosyaya yazma hakkında aşağıdaki sorun var, liste bunun gibi görünüyor, farklı pdfs'ler için farklı kaydedebilirim ve şimdi yazmaya çalışıyorum Farklı stoklar için ayrı ayrı csv dosyaları? Herhangi bir Ancak orada yerine AAPL diğer stokları da vardır ve bu liste oldukça uzun bir tane, ben bir pdf suikast planıyla her stokunun sonuçlarını yazmaya çalışıyorum olduğunu sizePython listesi, yineleme

('AAPL', Timestamp('2012-10-22 16:00:00'), 669.78999999999996, 669.68011449859193), 
('AAPL', Timestamp('2012-10-23 16:00:00'), 669.78999999999996, 669.68021661402906), 
('AAPL', Timestamp('2012-10-24 16:00:00'), 669.78999999999996, 669.67977965494936), 
('AAPL', Timestamp('2012-10-25 16:00:00'), 669.78999999999996, 669.67977965494936), 
('AAPL', Timestamp('2012-10-26 16:00:00'), 669.78999999999996, 669.67977965494936), 
('AAPL', Timestamp('2012-10-31 16:00:00'), 669.78999999999996, 669.67977965494936), 

ederim, yine bana yardımcı olabilir dosya. Bu kod tek bir hisse senedi için çalışıyor, listemdeki tüm hisse senetleri için nasıl çalışırım?

prediction = np.asarray(prediction_series) 
    stocks = set(prediction[:,0]) 
    for stocki in stocks: 
    p_stock = prediction[np.where(prediction[:,0] == stocki)] 
    print p_stock.shape[0] 
    predictionValues= p_stock[:,2:4] 
    predY=p_stock[:,2] 
    actualY=p_stock[:,3] 
    #predictionStock=prediction[:,1] 
    dates=p_stock[:,1:2] 


    writer = csv.writer(open('Predicted and Actual Y %s.csv' % stock, 'wb'), delimiter=',') 
    for i in range(0,predY.shape[0]): 

      row_to_enter = [dates[i],predY[i], actualY[i]] 
      writer.writerow(row_to_enter) 
    plt.clf() 
    plt.plot(dates, predictionValues) 
    plt.legend(ls) 
    plt.ylabel('Predicted vs actual') 
    plt.xlabel('Date') 

Teşekkür

cevap

1

Bazı stok ait değerleri almak için np.where kullanabilirsiniz: Bu kez her hisse senedi için, dizi birden çok kez filtreler

stocks = set(prediction[:,0]) 
for stock in stocks: 
    p_stock = prediction[np.where(prediction[:,0] == stock)] 
    # plot data from p_stock here 

Not söyledi. Bu yüzden, çok farklı stoklarınız varsa ve liste gerçekten büyükse, listenin tamamını tek geçişte filtrelemek için, stok isimlerini listelere eşleyen bir sözlük kullanabilirsiniz.

+0

Hey çok teşekkür ederim, işe yaradı: D: D, beni bir çok beladan kurtardı.Teşekkür ederim –

+0

Merhaba, Bir csv dosyasına aynı şekilde yazmak ister miyim? bana nasıl açıklayabilir misin? Aşağıdakileri yaptım, ama sadece son stoğu aldım. writer = csv.writer (open ('Tahmini ve Gerçek Y% s.csv'% hisse senedi, 'wb'), sınırlayıcı = ',') , i aralığında (0, ön. Shape [0]): row_to_enter = [tarih [i], perdy [i], asıl [i]] writer.writerow (row_to_enter) –

+0

@ZenStan Sadece son stoğu alıyorsanız, bu kodun stok için _inside_ olduğuna emin misiniz? -loop? –