减去两个不同长度的pandas数据帧

时间:2017-08-16 16:11:18

标签: python python-3.x pandas

我需要在两个不同的数据帧之间进行减法。

我试过以下代码:

df_sw['Apropriacao_total'] = df_sw_ant.merge(df_sw, how='left', right_on=['Data posicao', 'Ativo', 'Data vencimento'],
                left_on=['Data posicao', 'Ativo', 'Data vencimento'])

[' Apropriacao_conjunta']。sub([' Apropriacao'],轴= 1)

下面是样本数据框样本:

df_sw Cols:6行:62

   Data_posicao   Ativo Data_vencimento  Apropriacao  Apropriacao_conjunta
0    2017-07-03    RXU7      2017-09-07      -631.17              -631.17
1    2017-07-04    RXU7      2017-09-07      -828.59              -828.59
...
22   2017-07-05    GCQ7      2017-07-31      1820.06              1820.06
...
53   2017-07-18  CNHBRL      2017-09-28      1431.82              1431.82

df_sw_ant Cols:6行:32

     Data_swap Data_posicao   Ativo Data_vencimento  Apropriacao_swap
0   2017-07-03   2017-06-30    RXU7      2017-09-07           -333.66
1   2017-07-04   2017-07-03    RXU7      2017-09-07           -631.17
...
22  2017-07-05   2017-07-04    GCQ7      2017-07-31            720.06
...
29  2017-07-20   2017-07-19  CNHBRL      2017-09-28           -157.30

问题: 如何进行减法(df_sw [' Apropriacao_conjunta'] - df_sw_ant [' Apropriacao_swap'])其中:

df_sw['Data_posicao'] = df_sw_ant['Data_swap']以及df_sw['Ativo'] = df_sw_ant['Ativo']df_sw['Data_vencimento'] = df_sw_ant['Data_vencimento']

减法将在轴= 1

中完成

1 个答案:

答案 0 :(得分:0)

您可以尝试关注并查看它是否适合您:

# merge and save to new dataframe
df_merged = df_sw_ant.merge(df_sw, how='left', right_on=['Data posicao', 'Ativo', 'Data vencimento'],
            left_on=['Data posicao', 'Ativo', 'Data vencimento'])

# save subtracted result to a new column
df_merged['Sub_Value'] = df_merged['Apropriacao_conjunta'] - df_merged['Apropriacao']

然后,Sub_Value中的df_merged列将包含减去两列的结果。