2017-08-15 3 views
0

Ich brauche ein paar Operationen zwischen einigen Säulen unterschiedlichen Datenrahmen zu tun, hatte ich versucht, dass mit dem Follow-Code:Berechnung mit vielen Spalten aus einer Menge von Datenrahmen

df_swap['Apropriacao'] = df_sw[(df_sw.loc[:, 'Ativo'] == df_mov.loc[:, 'Ativo']).all() and (df_sw.loc[:, 'Data posicao'] == df_mov.loc[:, 'Data posicao']).all()].sum(axis=1) 

Aber ich glaube, das ist nicht der richtige Weg, es zu tun (und eine Ausnahme zu zeigen).

Die Probe von Datenrahmen sind:

df_mov

idx Data posicao Ativo Valor 
0 2017-07-03 RXU7  0.0 
1 2017-07-04 RXU7  0.0 
2 2017-07-05 RXU7  0.0 
3 2017-07-06 RXU7  0.0 
4 2017-07-07 RXU7  0.0 
5 2017-07-10 RXU7  0.0 
... 
21 2017-07-03 GCQ7  0.0 
22 2017-07-04 GCQ7  0.0 
23 2017-07-05 GCQ7  0.0 
24 2017-07-06 GCQ7  0.0 
25 2017-07-07 GCQ7 1341.0 
26 2017-07-10 GCQ7  0.0 
... 
42 2017-07-03 CNHBRL  0.0 
43 2017-07-04 CNHBRL  0.0 
44 2017-07-05 CNHBRL  0.0 
45 2017-07-06 CNHBRL  0.0 
46 2017-07-07 CNHBRL  0.0 
47 2017-07-10 CNHBRL  0.0 
... 

df_sw

Data posicao Ativo Data vencimento Apropriacao 
0 2017-07-03 RXU7  2017-09-07  -1431.17 
1 2017-07-04 RXU7  2017-09-07 -788258.59 
2 2017-07-05 RXU7  2017-09-07  -4206.24 
3 2017-07-06 RXU7  2017-09-07  50062.78 
4 2017-07-07 RXU7  2017-09-07  499642.57 
5 2017-07-10 RXU7  2017-09-07  49191.00 
... 
21 2017-07-03 GCQ7   None   0.00 
22 2017-07-04 GCQ7  2017-07-31  1820.06 
23 2017-07-05 GCQ7  2017-07-31  -2767.20 
24 2017-07-06 GCQ7  2017-07-31  -1648.37 
25 2017-07-07 GCQ7  2017-07-31   0.00 
26 2017-07-10 GCQ7   None   0.00 
... 
42 2017-07-03 CNHBRL   None   0.00 
43 2017-07-04 CNHBRL   None   0.00 
44 2017-07-05 CNHBRL   None   0.00 
45 2017-07-06 CNHBRL   None   0.00 
46 2017-07-07 CNHBRL   None   0.00 
47 2017-07-10 CNHBRL   None   0.00 

Wie ich df_mov['Valor'] mit df_sw['Apropriacao'] summieren können, wo df_mov['Data posicao']-df_sw['Data posicao'] undgleichentspricht df_sw['Ativo']?

+0

Was ist deine Frage? –

+0

Wie kann ich df_mov ['Valor'] mit df_sw ['Apropriacao'] summieren, wobei df_mov ['Daten posicao'] gleich df_sw ['Daten posicao'] ist und df_mov ['Ativo'] gleich df_sw ['Ativo ist "]? – Matheus

+0

warum nicht "fusionieren" oder zwei df zu eins verbinden? – Wen

Antwort

0

Ich würde vorschlagen, die Datenrahmen verschmelzen und dann auf die Spalten die Summe der Durchführung (dies setzt voraus, Sie versuchen, die Werte für jede Zeile zusammenzufassen, anstatt die Spalten als Ganzes SUM):

df_mov.merge(df_sw, 
    left_on=['Data posicao', 'Ativo'], 
    right_on=['Data posicao', 'Ativo'], 
    )[['Valor', 'Apropricao']].sum(axis=1) 
+0

Ja, das Ziel besteht darin, die Summe pro Zeile durchzuführen, aber solange die beiden Daten und die zwei Assets (jedes Datenrahmens) gleich sind. – Matheus

+0

Okay - macht dieser Code das, wie du es willst? – ASGM

+0

Ja !!! Ich danke dir sehr!!! – Matheus

Verwandte Themen