猿问

使用来自单独数据帧的最新数据更新一个数据帧

我正在尝试使用存储在单独数据框中的价格更新头寸数据框。我想将最新价格放入“ last_price”列中,并将该价格的数据放入“ last_date”列中。


import datetime

from scipy import stats

import numpy as np

import pandas as pd



df_portfolio = pd.DataFrame({ 'amount' : np.random.randint(low=0, high=10,     size=(4)),

                    'timestamp' : pd.Timestamp('20130102'),

                    'exch' : pd.Categorical(["e1","e1","e2","e2"]),

                    'token' : pd.Categorical(["BTC","ETH","ETH","LTC"])

               })


df_ETH_price = pd.DataFrame({

    'date': ('2018-08-11','2018-08-12','2018-08-13'),

    'price' : (322.11,319.57,286.50)    

    })


df_portfolio['last_price'] = np.nan

df_portfolio['last_date'] = "?"


print(df_portfolio)

print (df_ETH_price)

预期结果如下:


   amount exch  timestamp token  last_price last_date

0       7   e1 2013-01-02   BTC         NaN         ?

1       4   e1 2013-01-02   ETH         286.50      2018-08-13

2       2   e2 2013-01-02   ETH         286.50      2018-08-13

3       9   e2 2013-01-02   LTC         NaN         ?


有只小跳蛙
浏览 112回答 3
3回答

一只名叫tom的猫

我会在您的价格跟踪数据框中创建一个标记,因此很明显正在谈论哪种代币:m = df_ETH_price.assign(token='ETH').tail(1)然后合并:df_portfolio.merge(    m, how='outer').rename(columns={'date': 'last_date', 'price': 'last_price'})   amount  timestamp exch token   last_date  last_price0       2 2013-01-02   e1   BTC         NaN         NaN1       0 2013-01-02   e1   ETH  2018-08-13       286.52       3 2013-01-02   e2   ETH  2018-08-13       286.53       7 2013-01-02   e2   LTC         NaN         NaN
随时随地看视频慕课网APP

相关分类

Java
我要回答