Dies sieht wie eine Art der Portfolio-Diversifizierung aus. Die aapl, cisco, ibm und amzn sind DataFrames, die mindestens ein NormedReturn-Feld enthalten.
aapl = pd.DataFrame({'NormedReturn':[1,2,3]})
cisco = pd.DataFrame({'NormedReturn':[4,5,6]})
ibm = pd.DataFrame({'NormedReturn':[7,8,9]})
amzn = pd.DataFrame({'NormedReturn':[10,11,12]})
Der Datenrahmen als auch könnte einzelne Werte werden enthalten, wie 'NormedReturn': [13], kein Problem.
Zip-Funktion Reißverschlüsse zusammen iterables. Es weist diesen Rückgaben die gegebenen Zuordnungsgewichte zu; 0,3 weigth zum AAPL Lager, 0,2 Gewicht auf die cisco Lager, etc:
for stock_df, allo in zip((aapl, cisco, ibm, amzn), [.3,.2,.4,.1]):
print stock_df, allo
gibt uns die Aktienrenditen und die jeweilige Zuteilung Gewicht:
NormedReturn
0 1
1 2
2 3 0.3
NormedReturn
0 4
1 5
2 6 0.2
NormedReturn
0 7
1 8
2 9 0.4
NormedReturn
0 10
1 11
2 12 0.1
schließlich die Zuordnung vervielfacht Serie zurückkehren, indem die Zuordnungsgewichte:
for stock_df, allo in zip((aapl, cisco, ibm, amzn), [.3,.2,.4,.1]):
stock_df['Allocation'] = stock_df['NormedReturn']*allo
print stock_df
Gibt Ihre Zuordnung, dh Rückkehr * Gewicht Serie:
NormedReturn Allocation
0 1 0.3
1 2 0.6
2 3 0.9
NormedReturn Allocation
0 4 0.8
1 5 1.0
2 6 1.2
NormedReturn Allocation
0 7 2.8
1 8 3.2
2 9 3.6
NormedReturn Allocation
0 10 1.0
1 11 1.1
2 12 1.2
Ich denke, danach muss dein Freund alle der NormedReturns und Allocations zusammen, die wie Ihr endgültiges Portfolio zurückgibt.
Blick auf Python Dokument: https://docs.python.org/3.6/library/functions.html#zip –
Es gibt eine schöne Erklärung auf 'zip' [hier] (https://stackoverflow.com/questions/1663807/How-to-iterate-through-two-lists-in-parallel). – deadbug
Die Objekte, die Sie zippen, werden abgeschnitten, aber sie haben die gleiche Länge: '(aapl, cisco, ibm, amzn)' hat Länge 3, also '[.3, .2, .4, .1]'. –