2024-05-19 02:25:17 发布
网友
我想查找包含字符串的行,如下所示:
DF[DF.col.str.contains("foo")]
但是,这失败了,因为有些元素是NaN:
ValueError: cannot index with vector containing NA / NaN values
所以我求助于困惑
DF[DF.col.notnull()][DF.col.dropna().str.contains("foo")]
有更好的办法吗?
除上述答案外,我想说的是,对于没有单字名称的栏目,您可以使用:
df[df['Product ID'].str.contains("foo") == True]
希望这有帮助。
我并不是百分之百地解释原因(实际上是来这里寻找答案的),但这也有效,不需要替换所有的nan值。
import pandas as pd import numpy as np df = pd.DataFrame([["foo1"], ["foo2"], ["bar"], [np.nan]], columns=['a']) newdf = df.loc[df['a'].str.contains('foo') == True]
使用或不使用.loc。
.loc
我不知道为什么这样做,因为我知道当你用方括号进行索引时,panda会将方括号内的内容作为True或False进行求值。我不明白为什么把括号里的短语变成“额外布尔值”会有任何效果。
True
False
有一面旗子:
In [11]: df = pd.DataFrame([["foo1"], ["foo2"], ["bar"], [np.nan]], columns=['a']) In [12]: df.a.str.contains("foo") Out[12]: 0 True 1 True 2 False 3 NaN Name: a, dtype: object In [13]: df.a.str.contains("foo", na=False) Out[13]: 0 True 1 True 2 False 3 False Name: a, dtype: bool
请参阅^{}文档:
na : default NaN, fill value for missing values.
因此您可以执行以下操作:
In [21]: df.loc[df.a.str.contains("foo", na=False)] Out[21]: a 0 foo1 1 foo2
除上述答案外,我想说的是,对于没有单字名称的栏目,您可以使用:
希望这有帮助。
我并不是百分之百地解释原因(实际上是来这里寻找答案的),但这也有效,不需要替换所有的nan值。
使用或不使用
.loc
。我不知道为什么这样做,因为我知道当你用方括号进行索引时,panda会将方括号内的内容作为
True
或False
进行求值。我不明白为什么把括号里的短语变成“额外布尔值”会有任何效果。有一面旗子:
请参阅^{} 文档:
因此您可以执行以下操作:
相关问题 更多 >
编程相关推荐