2016-02-29 34 views
1

我有2个数据帧,我需要做一个左合并(不想失去第一个DF的记录)。我可以做合并罚款,但是当我添加一个where条件(我想要记录其中time_dim_id介于call_dim_id和evt_dim_id之间)时,我失去了在evt_dim_id中有空值的记录(我也想保留这些记录)。 这是我的代码的where条件的开始。如何添加“OR”,以便将记录保存在evt_dim_id为空的位置?熊猫数据帧左合并成为内部合并,因为在哪里条件

df_MG_where = df_MG[((df_MG.time_dim_id >= df_MG.call_dim_id) & (df_MG.time_dim_id <= df_MG.evt_dim_id)) | (df_MG.evt_dim_id ????)] 

回答

0

IIUC您可以添加功能isnull到条件:

print df_MG 
    time_dim_id call_dim_id evt_dim_id 
0   10   3  25.0 
1   8   4   NaN 
2   1   5   2.3 
3   1   6   2.4 
4   2   7   1.2 
5   2   8   5.5 
6   2   9   5.7 

df_MG_where = df_MG[(((df_MG.time_dim_id >= df_MG.call_dim_id) & 
        (df_MG.time_dim_id <= df_MG.evt_dim_id)) | (df_MG.evt_dim_id.isnull()))] 

print df_MG_where      
    time_dim_id call_dim_id evt_dim_id 
0   10   3   25 
1   8   4   NaN 
+0

谢谢!这是拼图的最后一块。真的很感谢帮助。 – ChrisMcK