首页 > 解决方案 > 如何获得满足数据框中某些条件的值

问题描述

我将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)中,我找到了一个类似的答案,但我不知道如何使用它。

标签: pythonpandasdataframe

解决方案


您可以传入 na 参数,str.contains()因此基本上 na 参数根据您的输入将 NaN 值设置为 True/False:

mask = df[df.columns[0]].str.contains('ccdd',na=False)

现在终于将该掩码传递给您的df:

df[mask]
#OR
df.loc[mask]

推荐阅读