gpt4 book ai didi

python - 从 Dataframe Pandas 中提取多个范围

转载 作者:行者123 更新时间:2023-12-01 09:14:31 27 4
gpt4 key购买 nike

假设我有以下数据集:

A      B    
10.1 53
12.5 42
16.0 37
20.7 03
25.6 16
30.1 01
40.9 19
60.5 99

我有以下范围列表。

[[9,15],[19,22],[39,50]]  

如何有效地提取位于这些范围内的行?

想要的输出

A      B    
10.1 53
12.5 42
20.7 03
40.9 19

编辑:需要处理浮点

最佳答案

更新已修改的问题

对于 float ,您可以使用 NumPy 数组运算构造掩码:

L = np.array([[9,15],[19,22],[39,50]])
A = df['A'].values

mask = ((A >= L[:, 0][:, None]) & (A <= L[:, 1][:, None])).any(0)

res = df[mask]

print(res)

A B
0 10.1 53
1 12.5 42
3 20.7 3
6 40.9 19
<小时/>

对原始问题的先前回答

对于整数,您可以将 numpy.concatenatenumpy.arange 结合使用:

L = [[9,15],[19,22],[39,50]]

vals = np.concatenate([np.arange(i, j) for i, j in L])

res = df[df['A'].isin(vals)]

print(res)

A B
0 10 53
1 12 42
3 20 3
6 40 19

使用itertools.chainrange的替代解决方案:

from itertools import chain

vals = set(chain.from_iterable(range(i, j) for i, j in L))

res = df[df['A'].isin(vals)]

关于python - 从 Dataframe Pandas 中提取多个范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51371507/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com