pandas 查找数据

标签: 编程语言

这里选取的数据集为 conceptNet5 的中文数据集

data = pd.read_csv(FILE, delimiter='\t')
data.columns = ['uri', 'relation', 'start', 'end', 'json']

在这里插入图片描述

使用布尔运算

使用计时器参见:【python 代码计时】

with Timer() as t:
    data[data['start'].str.contains('zh') & data['end'].str.contains('zh')]
'''
[time spent: 0.57s]
'''
这个速度还比较快了

在这里插入图片描述

使用 apply 方法

with Timer() as t:
    data[data.apply(lambda row: 'zh' in row['start'] and 'zh' in row['end'],axis=1)]
'''
[time spent: 9.03s]
'''

apply 是逐行遍历,看来没有做并行优化,

然鹅!上面的代码是有问题的!是可以优化的!

最大的问题就是上面的代码把不相关的列也牵扯了进来,正确的写法应该是:

with Timer() as t:
	data[data['start'].apply(lambda row: row.find('zh')>0) & data['end'].apply(lambda row: row.find('zh')>0)]
'''
[time spent: 0.33s]
'''

速度提升令人震惊!

版权声明:本文为itnerd原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/itnerd/article/details/103481101