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

使用df.query查找True和False值

  •  1
  • mhooper  · 技术社区  · 3 年前

    我已经用一致的列连接了两个数据帧。其中一列题为 isForecast 其中,顶部数据帧的值为False,数据帧为True(我正在向实际数据添加预测)。从这一点开始,我将数据进行了sklearn回归,这是有效的,但当我试图打开预测时,我得到了一个错误。

    allData = pd.concat([actuals, forecast])
    allData = adjustment(allData,periodLength) #### this is a seperate function but the 'isForecast'column remains consistent.
    
    forecastOutput = allData.query('isForecast').copy() ## error here
    

    我犯的错误没有道理。我的索引是一个标题为“datetime”的列,没有被引用。

    [Index]中没有任何[Index]([False,False,False,False,False,False,False,\n…\n True,True,True、True、True,True],\n dtype='object',name='datetime',length=91968)]

    任何建议或意见

    1 回复  |  直到 3 年前
        1
  •  3
  •   jezrael    3 年前

    对于我来说,使用您的解决方案,替代方案是通过比较 True :

    allData = pd.DataFrame({'isForecast':[True, False, True]})
    
    forecastOutput = allData.query('isForecast').copy()
    print(forecastOutput)
       isForecast
    0        True
    2        True
    

    forecastOutput = allData.query('isForecast == True').copy()
    print(forecastOutput)
       isForecast
    0        True
    2        True
    

    或布尔索引:

    forecastOutput = allData[allData['isForecast']]
    print(forecastOutput)
       isForecast
    0        True
    2        True
    

    如果值不是布尔值:

    allData = pd.DataFrame({'isForecast':['True', 'False', 'True']})
    
    forecastOutput = allData.query('isForecast == "True"').copy()
    print(forecastOutput)
      isForecast
    0       True
    2       True