2017-08-15 53 views
0

我需要做不同的數據幀中的某些列之間的一些操作的很多列,我曾試圖與後續代碼:計算從大量數據幀

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) 

但我相信這不是正確的方法來做到這一點(並顯示一個例外)。

數據幀的樣品是:

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 

如何可以總結df_mov['Valor']df_sw['Apropriacao']其中df_mov['Data posicao']等於df_sw['Data posicao']df_mov['Ativo']等於df_sw['Ativo']

+0

你的問題是什麼? –

+0

如何將df_mov ['Valor']與df_sw ['Apropriacao']相加,其中df_mov ['Data posicao']等於df_sw ['Data posicao'],df_mov ['Ativo']等於df_sw ['Ativo 「]? – Matheus

+0

爲什麼不合並或者將兩個df合併到一個? – Wen

回答

0

我建議合併dataframes,然後在列執行總和(這裏假設你想總結的值的每一行,而不是總結列作爲一個整體):

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

是的,目標是執行每行總和,但只要兩個日期和兩個資產(每個數據幀)相等。 – Matheus

+0

好的 - 此代碼是否以您想要的方式執行此操作? – ASGM

+0

是的!非常感謝!!! – Matheus