python - 从 pandas 的行中过滤出 nan 值
问题描述
我正在开发一个计算器来确定喂鱼的食物,作为一个有趣的项目来学习 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”对象没有属性“小丑鱼”
谢谢你们的帮助。我是一个完全的熊猫菜鸟,所以非常感谢。
解决方案
您可以在 pandas 中使用掩码:
food = 'Amphipods'
mask = df[food].notnull()
result_set = df[mask]
df[food].notnull()
返回一个掩码(一系列布尔值,指示每行是否满足条件),您可以使用该掩码过滤真实的 DF,使用df[mask]
.
通常您可以将这两行组合起来以获得更 Pythonic 的代码,但这取决于您:
result_set = df[df[food].notnull()]
这将返回一个新的 DF,其中包含满足条件的行子集(包括原始 DF 中的所有列),因此您可以在此新 DF 上使用其他操作(例如,选择列子集、删除其他缺失值等)
查看更多.notnull()
:https ://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.notnull.html
推荐阅读
- javascript - DynamoDB batchWrite 在继续之前没有等待,并且没有错误?
- python - 将比赛与熊猫中的每个比赛行相关联
- scala - Scala 测试,如何从演员那里获取结果
- nodes - 在nodered中将值从数组发送到mqtt
- apache-spark - 将一年中的某一天转换为 day_month 格式
- python - 检查列表中的空白字符串
- javascript - 我如何在这个 JS 打字动画上添加比例、不透明度和 translateZ 效果,就像在anime.js 的第二个示例中一样
- flutter - 如果 TextSpan 包含不同的语言,则 TextSpan 的背景具有不同的高度
- javascript - 转换 JSON 对象列表
- html - 更改替换和排除多行 html 代码