使用shift()比较熊猫数据框中的行

问题描述 投票:0回答:1

我想在Type列中为每个“交易”找到最接近的“报价”,并使用shift()将数据从最接近的“报价”的Bid price拉到“交易”的Prevailing price “。

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',结果基于上一个'Trade'的Bid price,而不是最接近的“ Quote”的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

谢谢您的帮助。

我想在“类型”列中为每个“交易”找到最近的“报价”,并使用shift()将数据从最近的“报价”的买入价拉到“交易”的现行价格。以...

python pandas dataframe shift
1个回答
0
投票

用途:

© www.soinside.com 2019 - 2024. All rights reserved.