-2
我有字符串的列表如下:掉落行通过匹配子串列表
drop_list = [ "www.stackoverflow", "www.youtube."]
我有一个熊猫数据帧df
用柱,用名column_name1
说,其可能或可能不包含drop_list中的子字符串。样品DF如下:
columnname1
------------
https://stackoverflow.com/python-pandas-drop-rows-string-match-from-list
https://stackoverflow.com/deleting-dataframe-row-in-pandas-column-value
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob
https://textblob.readthedocs.io/en/dev/
https://textblob.readthedocs.io/en/stackoverflow
https://textblob.readthedocs.io/en/youtube
https://www.youtube.com/watch?v=sHkjdkjsk
https://www.youtube.com/watch?v=_jksjdkjklI
https://www.youtube.com/watch?v=jkjskjkjkjkw
所以,我想从DF,其中包含从drop_list
子串删除所有行。
如果我理解正确,如果drop_list是我想要匹配的确切值,那么我可以根据此SO问题使用以下代码。
df[~df['column_name1'].isin(to_drop)]
或者使用str.contains
方法在this回答表明,如果它只是一个价值
df[~df['column_name1'].str.contains("XYZ")]
现在,如何既与方法相结合,删除列?所需的输出将丢弃包含计算器或从我的数据帧的YouTube任何行:
columnname1
------------
https://textblob.readthedocs.io/en/dev/quickstart.html#create-a-textblob
https://textblob.readthedocs.io/en/dev/
https://textblob.readthedocs.io/en/stackoverflow
https://textblob.readthedocs.io/en/youtube
如果我按原样运行df = df[~df['col1'].str.contains('|'.join(to_drop))]
与to_drop
,它保留了stackoverflow网址,但删除了youtube网址。
如果我改变我的列表更通用如下 to_drop =“计算器”,“YouTube”的视频]
它删除
https://textblob.readthedocs.io/en/stackoverflow
https://textblob.readthedocs.io/en/youtube
因此,所有我试图做的是删除所有包含stackoverflow和youtube网址的行。我正在避免使用urlparse库!
Here是MWE。
请提供的样品数据集和所希望的数据集 – MaxU
'.str.contains('| '.join(to_drop))'可以用来检查'to_drop'中的所有元素,但我不确定这是不是你问的。我认为样本也会很好。 – ayhan
新增样本数据集。 '''.str.contains('|'.join(to_drop))'''解决不了我相信。 – kingmakerking