2009-07-22 9 views
1

Ich verwende derzeit den folgenden Code, um die Schnittstellendatenspalte von zwei Gruppen von Finanzdaten zu erhalten. Die Arrays beinhalten Datum, o, h, l, ClWie wird ein alternatives Spaltenelement vom Befehl intersect zurückgegeben?

#find intersection of date strings 
def intersect(seq1, seq2): 
    res = []      # start empty 
    for x in seq1:    # scan seq1 
     if x in seq2:   # common item? 
      res.append(x) 


    return res 


x = intersect(seta[:,0], setb[:,0]) # mixed types 
print x 

Das Problem ist es nur die Spalte zurückgibt, für die sie die Schnittpunkt der beiden gefunden, nämlich die Datumsspalte. Ich möchte, dass es irgendwie ein anderes Spaltenarray einschließlich die cls Werte jedes Satzes zurückgibt ... ie .. wenn Datum ist üblich, um beide 2X1 Array der zwei entsprechenden Cls Spalten zurückgeben. Irgendwelche Ideen? Vielen Dank.

+0

Was meinen Sie mit "Cls-Werte" und "CLS-Spalten"? –

+1

Ist * gesetzt [:, 0] * ein Ausschnittausdruck? So etwas habe ich noch nie gesehen. – ThomasH

Antwort

0

Okay, hier ist eine komplette Lösung.

Holen Sie sich ein python library to download stocks quotes

Erhalten Sie einige Zitate

start_date, end_date = '20090309', '20090720' 
ibm_data = get_historical_prices('IBM', start_date, end_date) 
msft_data = get_historical_prices('MSFT', start_date, end_date) 

Convert Zeilen in datumsSchlüssel Wörterbücher Wörterbücher

def quote_series(series): 
    columns = ['open', 'high', 'low', 'close', 'volume'] 
    return dict((item[0], dict(zip(columns, item[1:]))) for item in series[1:]) 

ibm = quote_series(ibm_data) 
msft = quote_series(msft_data) 

die Kreuzung der Daten, was Sie

ibm_dates = set(ibm.keys()) 
msft_dates = set(msft.keys()) 

both = ibm_dates.intersection(msft_dates) 

for d in sorted(both): 
    print d, ibm[d], msft[d] 
+0

Hey Hugh, ist diese Struktur von * item * einige finanzielle Daten gemeinsamen Ort, mit denen jeder vertraut ist ?! – ThomasH

+0

Sie haben jedes Datenelement als Objekt modelliert, aber wenn ich das OP richtig verstanden habe, ist jedes ein Array. Deine Set-Konstruktoren sollten also wahrscheinlich * set (item [0] ...) *, deine dicts wie * dict ((item [0], item [1:])) * und deine print-Anweisung * print d , da [d] [3], db [d] [3] *, da OP sich nur für den cl-teil jedes artikels interessiert, oder ?! – ThomasH

0

Wie ist das:

def intersect(seq1, seq2): 
    if seq1[0] == seq2[0]: # compare the date columns 
     return (seq1[4], seq2[4]) # return 2-tuple with the cls values 
Verwandte Themen