Pandas - объединяет два DataFrame с условием (условие «между») - PullRequest
0 голосов
/ 14 октября 2018

это может быть сложный вопрос

у меня есть две таблицы

Table1:

   Day     Value
    1     1200             
    3     1300           
    4     1400            
    5     1500         

Table2:

Day   Price
    1     5        
    3     8    
    4     6    
    5     9 

Результат, который яwant, Final_table

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

Объяснение:

Соединить table2 с table1 в "Day", чтобы сделать Final_table, но есть некоторое условие

соединить строку Table2 со строкой Table1, еслиВыполните это условие:

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

если есть две строки таблицы 2, которые полностью удовлетворяют условию, присоединитесь к строке, имеющей только самый большой "день"

1 Ответ

0 голосов
/ 14 октября 2018

Попробуйте это:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...