熊猫:字符串

时间:2016-08-25 10:46:01

标签: python pandas

我尝试更改我的数据框。 通常我会使用像

这样的东西
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中,我想删除它。 (但是没有我希望在那里拥有的值)。

1 个答案:

答案 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