python - 无法按分位数选择 Pandas DataFrame

标签 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)

这给了我这个数据框:

Dataframe

但是当我尝试按十分位数过滤时:

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 的字符串表示形式。数据框中实际存在的对象。

关于python - 无法按分位数选择 Pandas DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67794530/

相关文章:

python - 无法从 sklearn PCA 中提取因子载荷

python - pd.merge 生成新的列名

python - 创建每小时间隔并循环获取 value_counts python pandas

r - 基于 R 中 2 个独立数据帧的值创建新数据帧的有效方法

python - 根据条件更新数据框列的有效方法

python - 数据读取-csv

python - 如何使用 Python 日志记录模块显示日期格式

python - @staticmethod 可以继承吗?

python - 如何在Python中区分大小写的同时测试两个字符串是否是字谜?

python - 计算使用 pandas 数据框列的公式字符串