使用大量数据帧中的大量列进行计算

2024-09-30 18:18:11 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在不同数据帧的某些列之间执行一些操作,我已经用以下代码尝试过了:

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)

但我认为这不是正确的方法(并且是一个例外)

dataframe的示例包括:

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']


Tags: 数据nonedfdataswalllocvalor
1条回答
网友
1楼 · 发布于 2024-09-30 18:18:11

我建议合并数据帧,然后对列执行求和(假设您尝试对每一行的值求和,而不是将列作为一个整体求和):

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

相关问题 更多 >