热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

pythondataframe模糊匹配_在两列pythondataframe之间的范围内搜索特定值

Asofwritingthis,thecurrentstablereleaseisv0.21.df0pd.read_csv(‘file1.csv’)df1pd.read_csv(‘

As of writing this, the current stable release is v0.21.

df0 = pd.read_csv(‘file1.csv’)

df1 = pd.read_csv(‘file2.csv’)

df0

Car Mileage

0 A 8

1 B 6

2 C 10

df1

Score Mileage(Min) Mileage(Max)

0 1 1 3

1 2 4 6

2 3 7 9

3 4 10 12

4 5 13 15

要查找分数,请通过调用IntervalIndex.from_tuples使用pd.IntervalIndex.这应该非常快-

v = df1.loc[:, ‘Mileage(Min)’:’Mileage(Max)’].apply(tuple, 1).tolist()

idx = pd.IntervalIndex.from_tuples(v, closed=’both’) # you can also use `from_arrays`

df0[‘Score’] = df1.iloc[idx.get_indexer(df0.Mileage.values), ‘Score’].values

df0

Car Mileage Score

0 A 8 3

1 B 6 2

2 C 10 4

here概述了其他创建IntervalIndex的方法.

df0.to_csv(‘file3.csv’)

这是我在这里所做的概述.

>首先,读入CSV文件

>使用pd.IntervalIndex构建间隔索引树.因此,搜索现在的复杂度是对数的.

>使用idx.get_indexer查找树中每个值的索引

>使用索引在df1中找到得分值,并将其分配回df0.请注意,我称.values,否则,分配回来时这些值将不对齐.

>将结果写回CSV

请注意,IntervalIndex是v0.20中的新功能,因此,如果您使用的是较旧的版本,请确保使用

pip install –upgrade pandas


推荐阅读
author-avatar
爱的伤痕累2602882347_111
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有