首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检查特定列中的范围是否覆盖Pandas中的特定值?

如何检查特定列中的范围是否覆盖Pandas中的特定值?
EN

Stack Overflow用户
提问于 2019-10-29 04:44:52
回答 1查看 134关注 0票数 0

我的问题是与这个问题相反的:How to check if any value of a column is in a range (in between two values) in Pandas?

实际上,我在列中有一个范围,我试图从DataFrame中获取特定值的所有行,而不是在我试图与特定范围进行比较的列中有一个值。

代码语言:javascript
复制
data = {'Reward_Level':['0-4','0-4', '5-10', '5-10', '11-16'],
        'reward' :['1', '2', '3', '4', '10']}
df = pd.DataFrame(data)
value = 2 # want to return all the rows whose range in 'Reward_Level' covers this value
df = df["How do I do this part?"]
# df >> gives me the rows for ['0-4', '1'] and ['0-4', '2']

我知道的方法是将Reward_Level拆分成两个单独的列,然后与最小值进行比较,然后再与最大值进行比较,但是有没有一种方法可以在不将这些列拆分成新列的情况下做到这一点呢?

EN

回答 1

Stack Overflow用户

发布于 2019-10-29 04:57:52

首先使用提取的每个范围的限制创建一个辅助DataFrame:

代码语言:javascript
复制
df2 = df.Reward_Level.str.extract(r'(?P<v1>\d+)-(?P<v2>\d+)').astype('int')

由于值将用于数值比较,因此必须将它们转换为int。

然后只使用布尔型索引:

代码语言:javascript
复制
df[df2.v1.le(value) & df2.v2.ge(value)]
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58598149

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档