代码之家  ›  专栏  ›  技术社区  ›  Devesh Agrawal

熊猫不过滤多个列上的数据[重复]

  •  0
  • Devesh Agrawal  · 技术社区  · 6 年前

    这个问题已经有了答案:

    漂亮的

        name      date   time      open      high       low     close
    0  NIFTY  20180903  09:16  11736.05  11736.10  11699.35  11700.15
    1  NIFTY  20180903  09:17  11699.00  11707.60  11699.00  11701.85
    2  NIFTY  20180903  09:18  11702.65  11702.65  11690.95  11692.40
    3  NIFTY  20180903  09:19  11692.55  11698.10  11688.65  11698.10
    4  NIFTY  20180903  09:20  11698.40  11698.40  11687.25  11687.70
    

    选项

          date      time    option_type  strike_price    open    high       low     close  volume  
    0     20180903  09:15          CE         11500     313.65  319.10      296.00  299.80    5250 
    1     20180903  09:16          CE         11500     299.00  303.85      299.00  300.60    3975  
    2     20180903  09:17          CE         11500     299.05  302.30      290.65  293.25    4500
    3     20180903  09:18          CE         11500     294.95  300.00      291.00  300.00    1500 
    4     20180903  09:19          CE         11500     300.50  300.50      295.60  295.60     975 
    

    在这两个DFS中,我只想筛选日期和时间都存在的行。我也试过用ISIN。但它并没有按预期工作。

    option=option[(option.date.isin(nifty.date)) & (option.time.isin(nifty.time))]  
    nifty=nifty[(nifty.date.isin(option.date)) & (nifty.time.isin(option.time))]
    

    有人能帮我吗?我期望的输出是:

    俏皮的

        name      date   time      open      high       low     close
    0  NIFTY  20180903  09:16  11736.05  11736.10  11699.35  11700.15
    1  NIFTY  20180903  09:17  11699.00  11707.60  11699.00  11701.85
    2  NIFTY  20180903  09:18  11702.65  11702.65  11690.95  11692.40
    3  NIFTY  20180903  09:19  11692.55  11698.10  11688.65  11698.10
    

    选项

          date      time    option_type  strike_price    open    high       low     close  volume  
    
    1     20180903  09:16          CE         11500     299.00  303.85      299.00  300.60    3975  
    2     20180903  09:17          CE         11500     299.05  302.30      290.65  293.25    4500
    3     20180903  09:18          CE         11500     294.95  300.00      291.00  300.00    1500 
    4     20180903  09:19          CE         11500     300.50  300.50      295.60  295.60     975 
    
    1 回复  |  直到 6 年前
        1
  •  1
  •   Zanshin    6 年前

    使用 merge 对于“日期”和“时间”这两种情况,通过这种方式,df将返回匹配值的子集;

    nifty_ = nifty.merge(option[['date','time']])
    
    option_ = option.merge(nifty[['date', 'time']])