【问题标题】:Filling a pandas dataframe with data from another dataframe based on certain conditions根据特定条件用来自另一个数据帧的数据填充熊猫数据帧
【发布时间】:2020-09-30 22:23:07
【问题描述】:

我有一个名为“optns”的 pandas 数据框,其中包含有关 S&P500 期权的信息,有 3 列:“日期”、“最佳报价”、“货币报价”。我创建了一个新的数据框“价格”,它有 8 列代表“Money Ticker”的不同值。我想用相应日期的“最佳报价”值填充此数据框。我写了一个代码,但它远没有效率,甚至可能是错误的:

for j in range(0,price.shape[0]):
    for i in range(0,optns.shape[0]):
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Call OTM 10%'):
            price.loc[j,'Call OTM 10%']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Call OTM 7%'):
            price.loc[j,'Call OTM 7%']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Call OTM 5%'):
            price.loc[j,'Call OTM 5%']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Call ATM'):
            price.loc[j,'Call ATM']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Put ATM'):
            price.loc[j,'ATM']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Put OTM 5%'):
            price.loc[j,'Put OTM 5%']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Put OTM 7%'):
            price.loc[j,'Put OTM 7%']=optns.loc[i,'best_offer']
        if (price.loc[j,'Date']==optns.loc[i,'Date']) and (optns.loc[i,'Money Ticker']== 'Put OTM 10%'):
            price.loc[j,'Put OTM 10%']=optns.loc[i,'best_offer']

我该怎么做?谢谢!

【问题讨论】:

    标签: pandas python-2.7 dataframe for-loop if-statement


    【解决方案1】:

    我相信你要找的是pd.pivot_table。 我不确定我是否完全理解您的数据框,但如果我明白了,这应该可以解决您的问题:

    pd.pivot_table(optns, columns="Money Ticker", values="Best Offer", index="Date")
    

    您可以查看链接的文档以获取更多信息。

    【讨论】:

      猜你喜欢
      • 2018-07-15
      • 2021-12-25
      • 2018-12-25
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 2017-11-10
      • 1970-01-01
      • 2013-06-14
      相关资源
      最近更新 更多