Я хотел бы найти ближайшую 'Котировку' для каждой 'Сделки' в столбце Type
и использовать shift()
, чтобы получить данные от Bid price
ближайшей "Котировки" до Prevailing price
из " Trade ".
import pandas as pd
df = pd.DataFrame(data=[['Quote', '1.4', '1.4'],
['Quote', '1.6', '1.6'],
['Trade', '10.0', 'NaN'],
['Quote', '1.7', '1.7'],
['Trade', '11.0', 'NaN'],
['Trade', '11.0', 'NaN'],
['Trade', '11.0', 'NaN']],
columns=['Type', 'Bid price', 'Prevailing price'])
df['Prevailing price'] = df['Bid price'].shift().where(df['Type'] == 'Trade',df['Bid price'])
print df
Я получаю ошибку в выводе: для непрерывной 'Trade' результат основан на Bid price
предыдущей 'Trade' вместо Bid price
ближайшего «Цитировать», как index 4-6
.
Type Bid price Prevailing price
0 Quote 1.4 1.4
1 Quote 1.6 1.6
2 Trade 10.0 1.6
3 Quote 1.7 1.7
4 Trade 11.0 1.7
5 Trade 11.0 11.0
6 Trade 11.0 11.0
Желаемый результат:
Type Bid price Prevailing price
0 Quote 1.4 1.4
1 Quote 1.6 1.6
2 Trade 10.0 1.6
3 Quote 1.7 1.7
4 Trade 11.0 1.7
5 Trade 11.0 1.7
6 Trade 11.0 1.7
Спасибо за вашу помощь.