2017-08-16 72 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列將有來自兩列相減的結果。