代码之家  ›  专栏  ›  技术社区  ›  Sid

比较两个数据帧,一列,并在匹配时添加某些值?

  •  1
  • Sid  · 技术社区  · 7 年前

    dataframes

    eqdf
      symbol   qty
    0  DABIND   1 
    1  INFTEC   6 
    2  DISHTV   8 
    3  HINDAL   40
    4  NATMIN   5 
    5  POWGRI   40
    6  CHEPET   6 
    
    premdf
       share  strike   lprice  premperc  d_strike
     0  HINDAL   250.0   237.90  1.975620  5.086171
     1  RELIND  1280.0  1254.30  1.642350  2.048952
     2  POWGRI   205.0   201.15  1.118568  1.913995
    

    columns premdf['share'] eqdf['symbol'] premperc , d_strike strike

    eqdf.loc[eqdf['symbol']==premdf['share'],eqdf['premperc'] == premdf['premperc']]
    

    我总是出错

    ValueError:只能比较标记相同的序列对象

    预期产量:

    eqdf
      symbol   qty   premperc   d_strike   strike   
    0  DABIND   1      NaN       NaN       NaN
    1  INFTEC   6      NaN       NaN       NaN      
    2  DISHTV   8      NaN       NaN       NaN 
    3  HINDAL   40    1.975620  5.086171   250.0
    4  NATMIN   5      NaN       NaN       NaN  
    5  POWGRI   40    1.118568  1.913995   205.0
    6  CHEPET   6      NaN       NaN       NaN
    

    谢谢

    1 回复  |  直到 7 年前
        1
  •  1
  •   piRSquared    7 年前

    rename merge

    eqdf.merge(premdf.rename(columns={'share': 'symbol'}), 'left')
    
       symbol  qty  strike  lprice  premperc  d_strike
    0  DABIND    1     NaN     NaN       NaN       NaN
    1  INFTEC    6     NaN     NaN       NaN       NaN
    2  DISHTV    8     NaN     NaN       NaN       NaN
    3  HINDAL   40   250.0  237.90  1.975620  5.086171
    4  NATMIN    5     NaN     NaN       NaN       NaN
    5  POWGRI   40   205.0  201.15  1.118568  1.913995
    6  CHEPET    6     NaN     NaN       NaN       NaN