过滤多个标准,包括不是nan

时间:2018-03-02 18:22:37

标签: python

我正在尝试根据两个标准从dataframe获取数据的子集,其中Region就像是nebraska'而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)]

1 个答案:

答案 0 :(得分:0)

这应该有效:

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

np.nan == np.nanFalse(请参阅explanation),这就是您的方法不起作用的原因。

我还添加了regex=False,这可以提高性能,na=False,这样您就不会因意外类型而出错。