2017-04-13 109 views
0

我有兩個數據幀,一個與歷史數據和一個附加在歷史數據的一些新的數據差異:比較兩個熊貓dataframes就共同日期

raw_data1 = {'Series_Date':['2017-03-10','2017-03-11','2017-03-12','2017-03-13','2017-03-14','2017-03-15'],'Value':[1,2,3,4,5,6]} 
import pandas as pd 
df_history = pd.DataFrame(raw_data1, columns = ['Series_Date','Value']) 
print df_history 

raw_data2 = {'Series_Date':['2017-03-10','2017-03-11','2017-03-12','2017-03-13','2017-03-14','2017-03-15','2017-03-16','2017-03-17'],'Value':[1,2,3,4,4,5,6,7]} 
import pandas as pd 
df_new = pd.DataFrame(raw_data2, columns = ['Series_Date','Value']) 
print df_new 

我要檢查所有日期df_history,如果df_new中的數據不同。如果數據是不同的,那麼就應該追加到df_check數據框如下:

raw_data3 = {'Series_Date':['2017-03-14','2017-03-15'],'Value_history':[5,6], 'Value_new':[4,5]} 
import pandas as pd 
df_check = pd.DataFrame(raw_data3, columns = ['Series_Date','Value_history','Value_new']) 
print df_check 

關鍵的一點是,我要檢查那些在我df_history DF所有日期,檢查是否存在值的那一天df_new DF以及是否相同。

+0

看看[合併,連接,並連接(HTTP://pandas.pydata .ORG /大熊貓-文檔/穩定/ merging.html)。 –

回答

0

只需運行一個mergequery過濾器來捕獲記錄,其中Value_history不等於Value_new

df_check = pd.merge(df_history, df_new, on='Series_Date', suffixes=['_history', '_new'])\ 
      .query('Value_history != Value_new').reset_index(drop=True) 

# Series_Date Value_history Value_new 
# 0 2017-03-14    5   4 
# 1 2017-03-15    6   5