熊猫-使用条件(“介于”条件)连接两个DataFrame

时间:2018-10-14 12:11:08

标签: pandas

这可能是一个复杂的问题

我有两个桌子

表1:

   Day     Value
    1     1200             
    3     1300           
    4     1400            
    5     1500         

表2:

Day   Price
    1     5        
    3     8    
    4     6    
    5     9 

我想要的结果,Final_table

 Day       Value Price
    1     1200  NaN   
    3     1300  5
    4     1400  8
    5     1500  6

说明:

在“天”将table2联接到table1以创建Final_table,但存在一些条件

如果满足以下条件,则将Table2行连接到Table1行:

Table2["Day"] >= Table1["Day"] - 2 and Table2["Day"] < Table1["Day"]

如果有两个Table2行满足条件,则加入仅具有最大“天”的行

1 个答案:

答案 0 :(得分:0)

尝试一下:

result = pd.DataFrame(columns=['day', 'value', 'price'])

for index, row in Table1.iterrows():
    tmp = Table2[(Table2["day"] >= row['day'] - 2) & (Table2["day"] < row['day'])]
    tmp['day'] = row['day']
    result = result.append(tmp[['price', 'day']].merge(row.to_frame().T, on='day'))

result

  day   price   value
0   3   5       1300
0   4   8       1400
0   5   8       1500
1   5   6       1500