首页 > 解决方案 > 删除不满足特定要求的元素

问题描述

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

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它。对于链接,我会使用joinand |。但是我在删除空值和长度较小的单词时遇到了一些问题(基于 5 的阈值)。请问这是一种有效的方法还是有其他方法可以获得所需的输出?

标签: pythonregexpandasstring

解决方案


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

推荐阅读