python读取特定两列_在两列python数据框之间的范围内搜索特定值

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值