筛选多个条件,包括非nan

2024-09-28 23:24:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从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)]

Tags: import区域过滤器dataframedataasnpnan
1条回答
网友
1楼 · 发布于 2024-09-28 23:24:28

这应该起作用:

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

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

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

相关问题 更多 >