Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如果行有2个字符串,则从数据帧中删除该行_Python_String_Pandas - Fatal编程技术网

Python 如果行有2个字符串,则从数据帧中删除该行

Python 如果行有2个字符串,则从数据帧中删除该行,python,string,pandas,Python,String,Pandas,我正在寻找一种方法,从熊猫数据帧中删除一行,如果它同时包含两个字符串。如果它有一个,我可以做,但还没能让两者都起作用。下面是我用来删除基于1个字符串的记录的代码,希望将其更改为包含另一个关键字 代码: 要排除的字符串: 我想检查文本以确保它不同时包含@teddyb_h20和@casekeenum7 例如: ['@teddyb_h2o test test','@casekeenum7 and @teddyb_h2o are test','@casekeenum7 is the best right

我正在寻找一种方法,从熊猫数据帧中删除一行,如果它同时包含两个字符串。如果它有一个,我可以做,但还没能让两者都起作用。下面是我用来删除基于1个字符串的记录的代码,希望将其更改为包含另一个关键字

代码:

要排除的字符串: 我想检查文本以确保它不同时包含@teddyb_h20和@casekeenum7

例如:

['@teddyb_h2o test test','@casekeenum7 and @teddyb_h2o are test','@casekeenum7 is the best right now']
然后,代码应生成如下所示的数据帧:

['@teddyb_h2o test test','@casekeenum7 is the best right now']
样品df

df = pd.DataFrame({'col': ['@teddyb_h2o test test','@casekeenum7 and @teddyb_h2o are test','@casekeenum7 is the best right now','test test']})

    col
0   @teddyb_h2o test test
1   @casekeenum7 and @teddyb_h2o are test
2   @casekeenum7 is the best right now
3   test test
解决方案:

df[~(df.col.str.contains('@teddyb_h2o') & df.col.str.contains('@casekeenum7'))]

    col
0   @teddyb_h2o test test
2   @casekeenum7 is the best right now
3   test test
@温家宝的建议,更加优雅

df[~df['col'].str.contains(r'^(?=.*@teddyb_h2o)(?=.*@casek‌​eenum7)')]

这是一个重复,使用Vikings_dataframe_cleaned[~Vikings_dataframe_cleaned.TweetText.str.containsRT |'你的_其他_字符串]可能与我刚才看到的消息线索重复,你能发布一个你的数据帧样本以及你想排除哪些字符串吗?我刚刚发布,希望这会有所帮助。如果需要,请告诉我more@Wen,让我们重新打开这个我得到了这个解决方案的否决票…祝你好运…给你的否决票:-我看到了,正在努力弄清楚。请取消删除,我将删除我的无需,如果您不介意,也可以添加..df[~df['col'].str.containsr'^?=.@teddyb_h2o?=.@casekeenum7']:-完美!这起作用了。谢谢大家的帮助让我们在本网站上直接找到正确答案:-
df[~df['col'].str.contains(r'^(?=.*@teddyb_h2o)(?=.*@casek‌​eenum7)')]