带有插值数据逻辑的 Pandas Merge_Order

Posted

技术标签:

【中文标题】带有插值数据逻辑的 Pandas Merge_Order【英文标题】:Pandas Merge_Order with interpolate data logic 【发布时间】:2019-01-11 11:51:45 【问题描述】:

我有两个熊猫数据框。我想将两个熊猫框架 df1 和 df2 合并为一个,并且我使用了以下行

df1 = pd.merge_ordered(df1, df2, on='Time_Stamp')

但最重要的是,我想填写 VWAP,如果缺少,请使用 (bid + ask)/2 填写值。

有没有办法做到这一点?

亲切的问候

df1 =

Time_Stamp bid ask
07:00:10   100 105
07:00:20   102 107
07:00:30   101 106
07:00:40   106 111

df2 =

Time_Stamp VWAP
07:00:10   103
07:00:20   ---
07:00:30   104
07:00:40   ---

【问题讨论】:

【参考方案1】:

如果等式代表所有行,您可以为所有这些计算 VWAP

df1 = pd.merge_ordered(df1, df2, on='Time_Stamp')
df1['VWAP'] = (df1['bid'] + df1['ask']) / 2

这将使用结果重新填充VWAP 列,或者如果您只想替换缺少的那些则

df1.loc[df1['VWAP'].isnull(), 'VWAP'] = (df1['bid'] + df1['ask']) / 2

【讨论】:

我认为不能回答这个问题。它将用平均值替换所有内容,而不仅仅是 NaN。 有点。如果VWAP 的值是以相同的方式派生的,它正在回答这个问题 不幸的是,VWAP 并不是真正的买卖中间价。我只是从出价+要价的中间估算 VWAP,其中 VWAP 缺失 您可以尝试检查缺失值的方法,如果缺失则计算,否则保留该值。【参考方案2】:

将数据框合并到变量df12 后,您可以这样做:

df12.loc[df12.VWAP.isnull(), 'VWAP'] = (df12.bid + df12.ask) / 2

输出:

    Time_Stamp  bid ask VWAP
0   07:00:10    100 105 103.0
1   07:00:20    102 107 104.5
2   07:00:30    101 106 104.0
3   07:00:40    106 111 108.5

【讨论】:

很遗憾,我收到一条错误消息,所以它不起作用

以上是关于带有插值数据逻辑的 Pandas Merge_Order的主要内容,如果未能解决你的问题,请参考以下文章

Python pandas绘制带有间隙的时间序列

带有绑定参数的预处理语句优于带有转义/引用参数的插值语句的原因

Pandas 数据框:使用线性插值重新采样

Pandas:在多索引数据帧中重新索引和插值

Python pandas 绘制带间隙的时间序列

Pandas - 根据之前的行为进行插值