我尝试更改我的数据框。 通常我会使用像
这样的东西df1= df[df.url.str.contains("avito.ru/*/telefony/")]
但如果我想要很多条件?
我想写contains
超过100个字符串。
我怎么能这样做?
数据帧
анонс кинофильмов 2016
анонс кинофильмов 2016
"выборок имеют величину момента сопротивления"
"выборок имеют величину момента сопротивления"
ансамбль 9 человек
ансамбль 9 человек
ансамбль 9 человек
"Времена года в музыке, литературе, живописи"
"Времена года в музыке, литературе, живописи"
"Времена года в музыке, литературе, живописи"
apple iphone
samsumg
facebook
None
None
None
列表中的一些单词
lst = ['iphone', 'sony', 'alcatel', 'galaxy', 'samsumg]
欲望输出
apple iphone
samsumg
None
None
None
我的意思是如果某些单词不包含在str中,我想删除它。 (但是没有我希望在那里拥有的值)。
答案 0 :(得分:1)
您可以通过将|
加入所有列表项来创建模式,然后将其传递给str.contains
:
In [31]:
lst = ['iphone', 'sony', 'alcatel', 'galaxy', 'samsumg','None']
pat = '|'.join(lst)
df[df['url'].str.contains(pat)]
Out[31]:
url
10 apple iphone
11 samsumg
13 None
14 None
15 None
要处理缺省值,请在布尔条件中包含pd.isNull(df['url'])
:
In [54]:
lst = ['iphone', 'sony', 'alcatel', 'galaxy', 'samsumg']
pat = '|'.join(lst)
df[pd.isnull(df['url']) | df['url'].str.contains(pat) ]
Out[54]:
url
10 apple iphone
11 samsumg
13 NaN
14 NaN
15 NaN