【问题标题】:Filter nan values out of rows in pandas从 pandas 的行中过滤出 nan 值
【发布时间】:2021-02-17 12:33:21
【问题描述】:

我正在开发一个计算器来确定喂鱼的食物,作为一个有趣的项目来学习 python、pandas 和 numpy。

我的数据是这样组织的:

如你所见,我的鱼是行,不同的食物是列。

我希望做的是让用户(我)输入一种食物,然后让程序向我输出所有非 nan 的值。

我宁愿将它们保留为 nan 而不是 0 的原因是我在不同的位置使用不同的数字来表示偏好。 1是自然饮食,2是可以但不理想,3是只活。

有没有办法使用熊猫来做到这一点?我在网上看到的所有地方都可以帮助我从列中筛选出行,但是很难找到有关从行中筛选列的信息。

目前,我的代码如下所示:

import pandas as pd
import numpy as np


df = pd.read_excel(r'C:\Users\Daniel\OneDrive\Documents\AquariumAiMVP.xlsx')
clownfish = df[0:1]
angelfish = df[1:2]
damselfish = df[2:3]

所以,如您所见,我还没有真正到达任何地方。我尝试使用以下想法过滤掉空值:

clownfish_wild_diet = pd.isnull(df.clownfish)

但它会导致错误,说:

AttributeError: 'DataFrame' 对象没有属性 'clownfish'

感谢各位的帮助。我完全是熊猫菜鸟,所以非常感谢。

【问题讨论】:

    标签: python pandas dataframe data-manipulation


    【解决方案1】:

    您可以在 pandas 中使用掩码:

    food = 'Amphipods'
    mask = df[food].notnull()
    result_set = df[mask]
    

    df[food].notnull() 返回一个掩码(一系列布尔值,指示每行是否满足条件),您可以使用该掩码通过df[mask] 过滤真实的 DF。

    通常您可以将这两行组合起来以生成更 Python 的代码,但这取决于您:

    result_set = df[df[food].notnull()]
    

    这将返回一个新的 DF,其中包含满足条件的行子集(包括原始 DF 中的所有列),因此您可以在此新 DF 上使用其他操作(例如,选择列子集,删除其他缺失值,等)

    查看更多关于.notnull()https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.notnull.html

    【讨论】:

    • 不客气!如果它解决了您的问题,请将答案标记为解决方案,或请求其他信息以编辑此答案
    猜你喜欢
    • 1970-01-01
    • 2021-12-10
    • 1970-01-01
    • 2019-08-07
    • 2020-02-01
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2016-12-24
    相关资源
    最近更新 更多