我正在尝试从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
这样您就不会收到意外类型的错误。