2017-08-16 73 views
0

我需要在两个不同的数据帧之间进行相减。减去两个不同长度的熊猫数据帧之间的差值

我不得不尝试后续代码:

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']子([ 'Apropriacao'],轴= 1)

下面,样本数据帧样本:

df_sw列数: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列数: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

回答

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

然后,在df_mergedSub_Value列将有来自两列相减的结果。