我正在尝试清理字符串中的数据。 更具体地说,我的数据集包括
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 的阈值)。
请问这是一种有效的方法还是有另一种方法可以获得所需的输出?
答案 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) 这样的东西并在循环中使用它。计数可以在同一个循环中完成。 ——