python - 如何获得满足数据框中某些条件的值
问题描述
我将excel数据读取为熊猫的数据框,其中每一行都有两个非NaN值(其他都是NaN)
名字 | 未命名:1 | 未命名:2 | 未命名:3 | ~ | 未命名:19 | 未命名:20 |
---|---|---|---|---|---|---|
钠 | 钠 | 1.3 | 钠 | 〜(南) | 10.4 | 钠 |
钠 | 钠 | 钠 | 2.7 | 〜(南) | 钠 | 12.7 |
~ | ~ | ~ | ~ | ~ | ~ | ~ |
名称_ccdd | 钠 | 1.3 | 钠 | 〜(南) | 9.3 | 钠 |
~ | ~ | ~ | ~ | ~ | ~ | ~ |
name_yyzz | 0.5 | 钠 | 钠 | ~4.7~ | 钠 | 钠 |
我想找到一个包含单词的特定行(例如“ccdd”)并以一般方式获取非 NaN 值(例如 1.3 和 9.3)
我制作了一个布尔值,其中包含显示哪个行索引包含一个单词(例如“ccdd”)
import pandas as pd
import numpy as np
filename= '~/data.xlsx'
df = pd.read_excel(filename, engine='openpyxl')
mask = df[df.columns[0]].str.contains('ccdd')
print(mask)
0 NaN
1 NaN
2 False
3 False
4 False
5 True
6 False
7 False
8 False
9 False
10 False
11 False
12 False
13 False
第 5 行包含关于我想要获得两个浮点值的数据。但我不能走得更远。
在之前的文章(Get row and column index of the value in Pandas df)中,我找到了一个类似的答案,但我不知道如何使用它。
解决方案
您可以传入 na 参数,str.contains()
因此基本上 na 参数根据您的输入将 NaN 值设置为 True/False:
mask = df[df.columns[0]].str.contains('ccdd',na=False)
现在终于将该掩码传递给您的df:
df[mask]
#OR
df.loc[mask]
推荐阅读
- vb.net - 表单边框样式设置为无,但标题栏仍然存在
- excel - Excel VBA 提取 url 形式 src 或 href
- javascript - 使用 selenium-webdriver 在 nodejs 中截取纵向 pdf 网页的屏幕截图
- angular - Angular 反应式表单:使用单个 formControlName 同步多个输入
- java - 我对 jenkins 插件的工作原理有疑问
- asp.net - 如何使用 SOAP 推送数据
- reactjs - 如何通过在分页旁边添加新字段来自定义数据网格页脚
- wordpress - wp_wpr_rucss_resources 表具有巨大的大小
- c# - Kaizala API:向成员发送消息
- html - HTML数字类型输入递增/递减按钮不断增加数字