Ich habe eine Dataframe Probe wie folgt:anwenden groupby Regeln auf Zeitreihen?
value=DataFrame({'A':[0,-1,0],
'B':[1,1,-1],
'C':[0,0,1],
'D':[-1,1,1]})
value.index=pd.date_range('1/1/2016',periods=len(value),freq='M')
Und ich möchte die Antwort haben, wie folgt:
answer=DataFrame({'A':[0,-1,0],
'B':[1,0.5,-0.5],
'C':[0,0,-0.5],
'D':[-1,0.5,1]})
answer.index=pd.date_range('1/1/2016',periods=len(value),freq='M')
Die Regel lautet:
Für jedes Datum, die Summe der Zeile ist Null, und das Gewicht wird gleichmäßig innerhalb jeder Wertkategorie von 0
, -1
oder 1
aufgeteilt.
Zum Beispiel
- Wenn es drei -1s, eine 1 ist, dann ist die Antwort -0.33, -0.33, -0.33,1
- Wenn es nur eine 1 und drei -1s ist , dann ist die Antwort 1, -0.33, -0.33, -0.33
- Wenn es zwei 1s ist, eine -1, ist die Antwort 0.5,0.5, -1,0