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