pandas 查找数据
程序员文章站
2022-03-04 21:10:04
...
这里选取的数据集为 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]
'''
速度提升令人震惊!