我正在尝试根据两个标准从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)]
答案 0 :(得分:0)
这应该有效:
testDataset[testDataset['Region'].str.contains('nebraska', regex=False, na=False) & \
pd.notnull(testDataset['metric1'])]
np.nan == np.nan
为False
(请参阅explanation),这就是您的方法不起作用的原因。
我还添加了regex=False
,这可以提高性能,na=False
,这样您就不会因意外类型而出错。