筛选多个条件,包括“不 NAN”



我正在尝试从dataframe中获取数据子集,基于两个标准,其中区域类似于"内布拉斯加州",而metric1不是nan

区域过滤器有效,但nan过滤器不起作用,我不确定为什么。希望得到一些关于为什么它不起作用的指示。

谢谢!

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
import math
import pyodbc

data = [{ 'Region':'nebraska', 'metric1':50},
        { 'Region':'nebraska', 'metric1':np.nan},
        { 'Region':'nebraska', 'metric1':50},
        { 'Region':'nebraska', 'metric1':50},
        { 'Region':'oaklahoma', 'metric1':np.nan},
        { 'Region':'oaklahoma', 'metric1':50},
        { 'Region':'oaklahoma', 'metric1':np.nan},]
testDataset = pd.DataFrame(data)
testDataset[(testDataset.Region.str.contains('nebraska')) & (testDataset.metric1 != np.nan)]

这应该有效:

testDataset[testDataset['Region'].str.contains('nebraska', regex=False, na=False) & 
            pd.notnull(testDataset['metric1'])]

np.nan == np.nan False(请参阅说明(,这就是您的方法不起作用的原因。

我还添加了 regex=False ,这应该可以提高性能,并na=False这样您就不会收到意外类型的错误。

最新更新