删除不满足特定要求的元素

时间:2021-02-07 04:07:19

标签: python regex pandas string

我正在尝试清理字符串中的数据。 更具体地说,我的数据集包括

Data            Links       
link1.com      ['#','link1bias','bias', 'link12']
href.com.co    ['','href1223', 'hreftest']
...

我想要的是

Data           Links        Count     
link1.com     ['bias']        1
href.com.co    []             2
...

如您所见,我应该清理列表,删除包含 Data 列中相应单词的元素(它应该至少包含整个单词),保持单词不为空或长度小于 5 个字符,然后计算如何数据中的链接中有许多句号。

对于计数,我会这样做:df['Data'].count('.'),但我觉得我应该为此使用 apply。 对于链接,我将使用 join|。但是我在删除空值和长度较短的单词时遇到了一些问题(基于 5 的阈值)。 请问这是一种有效的方法还是有另一种方法可以获得所需的输出?

2 个答案:

答案 0 :(得分:2)

Apply 应该适用于您的情况,因为它可以让您完全控制清理。

def clean(row):
    data_list = row['Data'].split('.')
    lnk = data_list[0]
    row['Count'] = len(data_list)-1
    row['Links'] = [el for el in row['Links'] if 
        lnk not in el and len(el) > 3]
    return row

df = df.apply(clean, axis = 1)

print(df)

输出:

        Data   Links  Count
0  link1.com  [bias]      1
1  href.com.co    []      2

答案 1 :(得分:0)

你想在这里使用正则表达式。定义您只需要字母字符和一定长度的字符就足够简单了。我不是一个完整的专家,但你会想要像 re.findall("^/w+", string) 这样的东西并在循环中使用它。计数可以在同一个循环中完成。 ——

相关问题