Python 熊猫:字符串的条件

Python 熊猫:字符串的条件,python,pandas,Python,Pandas,我有数据帧,如果某个列包含avito并且不包含telefony,我想从数据帧中删除字符串。 我可以写条件 df1=df[~df.url.str.contains(r“avito”)] 但我不知道如何使用telefony 数据: 期望输出: url avito.ru/mytischi/telefony/sim_karty_s_nulevym_balansom_bonus_689217820 avito.ru/moskva/telefony/blackberry_bold_new_rost-test

我有数据帧,如果某个列包含
avito
并且不包含
telefony
,我想从数据帧中删除字符串。 我可以写条件

df1=df[~df.url.str.contains(r“avito”)]

但我不知道如何使用
telefony
数据:

期望输出:

url
avito.ru/mytischi/telefony/sim_karty_s_nulevym_balansom_bonus_689217820
avito.ru/moskva/telefony/blackberry_bold_new_rost-test_original_697592392
avito.ru/moskva/telefony/blackberry_bold_blask_new_e._a._c._rost-test_696289049
vk.com

您希望复合布尔条件并对其求反:

In [18]:
df[~(df['url'].str.contains('avito') & ~df['url'].str.contains('telefony'))]

Out[18]:
                                                 url
0  avito.ru/mytischi/telefony/sim_karty_s_nulevym...
2  avito.ru/moskva/telefony/blackberry_bold_new_r...
3  avito.ru/moskva/telefony/blackberry_bold_blask...
5                                             vk.com
因此,内部条件:

df['url'].str.contains('avito') & ~df['url'].str.contains('telefony')
这里我们正在寻找包含“avito”而不包含“telefony”的URL:

In [19]:
df['url'].str.contains('avito') & ~df['url'].str.contains('telefony')

Out[19]:
0    False
1     True
2    False
3    False
4     True
5    False
Name: url, dtype: bool

然后,我们用括号括起来,使用第一个代码段中的
~
将上述内容颠倒过来

你认为
df1=df[~df.url.str.contains(r“avito | telefony”)]
?@jezrael这是否意味着字符串不包含
telefony
?@jezrael我认为OP想要
df1=df[df.url.str.contains(r“avito”)&~df.url.str.contains(r“avito”)]
但是没有样本数据、编码他们的尝试和所需的输出就不清楚了。你真的能加上这个吗?我加上它来回答。@EdChum-你说得对。我也不清楚,谢谢!我的意思是
df1=df[~(df['url'].str.contains('avito')&~df['url'].str.contains('telefony'))]
。对不起,我的问题不清楚。
In [19]:
df['url'].str.contains('avito') & ~df['url'].str.contains('telefony')

Out[19]:
0    False
1     True
2    False
3    False
4     True
5    False
Name: url, dtype: bool