python - 删除不满足特定要求的元素
问题描述
我正在尝试清理字符串中的数据。更具体地说,我的数据集包括
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
and |
。但是我在删除空值和长度较小的单词时遇到了一些问题(基于 5 的阈值)。请问这是一种有效的方法还是有其他方法可以获得所需的输出?
解决方案
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
推荐阅读
- ruby-on-rails - 使用 Rails 迁移的唯一约束
- jquery - 节点 JS 堆栈。通过 Jquery 和 AJAX 发布 ejs 数据时遇到问题
- facebook - Facebook graph api - 无法在我的帖子上完成其他用户活动数据
- javascript - 尝试迭代嵌套数组的多个级别不断得到“没有任何构造或调用签名”
- python - Apache Airflow Celery Executor:导入本地自定义 python 包
- python - T5 教程代码中 funtools.partial 的另一个用例
- java - Assigning two arrays by ID
- highcharts - Highcharts 动态突出显示列
- c - 读取文件时cygwin转储堆栈
- sql - SQL 占总数的百分比