删除熊猫列中的特定单词

时间:2020-06-14 18:48:47

标签: python pandas

我正在尝试从所有没有意义的术语中清除数据框中一列中的列表。

例如

      Col                       New_Col                                 

        VM                       ['#']
        JS                       [ '/','/UTENTI/','//utilsit/promo', '/notifiche/']
  www.facebook.com               ['https://www.facebook.com/','https://twitter.com/']
        FA                       ['/nordest/venezia/','/nordest/treviso/']

我想从列中的每个列表(行)中删除所有

  • 不要以https, http//开头
  • New_Col中包含Col作为子集(例如:www.facebook.com中包含https://www.facebook.com/,所以我应该删除它,不管它是否以https开头)< / li>

我试图编写以下代码:

prefixes=['http','https','//']

for word in df['New_Col']:
    if word.startswith(prefixes):
        list.remove(word)
print (df['New_Col'])

无论怎么说

“列表”对象没有属性“ startswith”

(属性错误)。 我想我在代码上方考虑列表而不是列表列。

您能帮我了解如何做吗?

2 个答案:

答案 0 :(得分:0)

创建一个函数以使用正则表达式删除所需的单词,然后将其应用于dataframe列,如下所示:

df['ColName'].apply(lambda x: func(x))

此处 func 是用于获取 ColName 列的每一行并返回所需结果的函数

答案 1 :(得分:0)

使用axis=1上的DataFrame.apply以及自定义过滤器功能fx

import re

fx = lambda s: [w for w in s['New_Col'] if s['Col'] not in w and re.match(r'^https?|//', w)]
df['New_Col'] = df.apply(fx, axis=1)

# print(df)
                Col                 New_Col
0                VM                      []
1                JS       [//utilsit/promo]
2  www.facebook.com  [https://twitter.com/]
3                FA                      []