python - 无法按分位数选择 Pandas DataFrame
问题描述
我使用 Pandas qcut 函数将一列值排序为分位数,但我无法通过这些分位数过滤 DataFrame,这里有一个示例:
df = pd.DataFrame(data = [i for i in range(100)], columns = ['values'])
df['bins'] = pd.qcut(df['values'], q = 10)
这给了我这个数据框:
但是当我尝试按一些十分位数过滤时:
df[df['bins'] == (-0.001, 9.9]]
我得到:
SyntaxError: invalid syntax
将间隔更改为字符串,就像df[df['bins'] == '(-0.001, 9.9]']
只返回一个空的 DataFrame,所以它也无济于事。我该怎么办?
解决方案
该pandas.qcut
方法返回一个带有pandas.IntervalIndex
. 要索引到该系列,您需要使用pandas.Interval
s 进行查询:
df = pd.DataFrame(data = [i for i in range(100)], columns = ['values'])
df['bins'] = pd.qcut(df['values'], q = 10)
df.loc[df['bins'] == pd.Interval(-0.001, 9.9)]
使用时出现语法错误的原因df['bins'] == (-0.001, 9.9]
是 Python 需要相同类型的括号匹配。在打印数据帧时,它确实显示了该序列,因为这与传统表示法相匹配,但它只是pd.Interval
实际在数据帧中的对象的字符串表示形式。
推荐阅读
- javascript - 保存一个使用 JS 和 PHP 到 MySQL - 可能吗?
- java - 我可以在这个正则表达式中添加什么以使其也通过 Java 中的下划线分隔字符串?
- php - 在 wordpress 中翻译文本
- ansible - Ansible 从多个 Json 文件中访问相同的变量
- php - Wordpress:警告:urlencode() 期望参数 1 是字符串,数组在 wp-includes/formatting.php 的第 4791 行
- windows - PowerShell Ctrl+L 没有按预期工作,如何调试?
- javascript - sendEmail 功能:如何限制这一点,使单元格值必须满足特定的文本值,例如“是”或“否”
- c# - 从 C# 代码发送电子邮件的问题 throw smtp
- c - 套接字创建失败的原因是什么?
- laravel - Laravel 删除事件监听器