python - 如何选择不仅仅包含 NaN 值和 0 的行

标签 python pandas

这是我的数据框:

cols = ['Country', 'Year', 'Orange', 'Apple', 'Plump']

data = [['US', 2008, 17, 29, 19],
        ['US', 2009, 11, 12, 16],
        ['US', 2010, 14, 16, 38],
        ['Spain', 2008, 11, None, 33],
        ['Spain', 2009, 12, 19, 17],
        ['France', 2008, 17, 19, 21],
        ['France', 2009, 19, 22, 13],
        ['France', 2010, 12, 11, 0],
        ['France', 2010, 0, 0, 0],
        ['Italy', 2009, None, None, None],
        ['Italy', 2010, 15, 16, 17],
        ['Italy', 2010, 0, None, None],
        ['Italy', 2011, 42, None, None]]

我想选择其中橙色苹果和丰满不只包含“无”、仅包含 0 或它们的混合的行。所以结果输出应该是:

   Country  Year  Orange  Apple  Plump  
0       US  2008    17.0   29.0   19.0  
1       US  2009    11.0   12.0   16.0  
2       US  2010    14.0   16.0   38.0  
3    Spain  2008    11.0    NaN   33.0  
4    Spain  2009    12.0   19.0   17.0  
5   France  2008    17.0   19.0   21.0 
6   France  2009    19.0   22.0   13.0  
7   France  2010    12.0   11.0    0.0  
10   Italy  2010    15.0   16.0   17.0  
12   Italy  2011    42.0    NaN    NaN  

其次,我想删除我三年来都没有观察到的国家。所以最终的输出应该只包含美国和法国。我怎样才能得到它们? 我试过类似的东西:

df = df[(df['Orange'].notnull())| \
            (df['Apple'].notnull()) | (df['Plump'].notnull()) | (df['Orange'] != 0 )| (df['Apple']!= 0) | (df['Plump']!= 0)]

我也试过:

df = df[((df['Orange'].notnull())| \
                (df['Apple'].notnull()) | (df['Plump'].notnull())) & ((df['Orange'] != 0 )| (df['Apple']!= 0) | (df['Plump']!= 0))]

最佳答案

In [307]: df[~df[['Orange','Apple','Plump']].fillna(0).eq(0).all(1)]
Out[307]:
   Country  Year  Orange  Apple  Plump
0       US  2008    17.0   29.0   19.0
1       US  2009    11.0   12.0   16.0
2       US  2010    14.0   16.0   38.0
3    Spain  2008    11.0    NaN   33.0
4    Spain  2009    12.0   19.0   17.0
5   France  2008    17.0   19.0   21.0
6   France  2009    19.0   22.0   13.0
7   France  2010    12.0   11.0    0.0
10   Italy  2010    15.0   16.0   17.0
12   Italy  2011    42.0    NaN    NaN

关于python - 如何选择不仅仅包含 NaN 值和 0 的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43668993/

相关文章:

python - 查找单个地理数据框中所有多边形中包含的重叠区域

Python Dataframe 获取子字符串

python将变量放在单引号内

python - Celeryd 忽略/etc/default/celeryd 中的 BROKER_URL

python - 如何识别只有 1 个真实条件的唯一 ID?

python - 如果任何值不等于数字,如何从 Pandas 数据框中选择行?

python - 按单列中的多个年份进行分组并绘制堆叠结果

python - 获取 Mayavi 颜色图指定的颜色

python - Python 3.4 中的多处理被破坏了吗?

python - 从 VSCode 运行时尝试通过 Selenium 打开 Firefox 失败