【问题标题】:E: Can only compare identically-labeled Series objectsE:只能比较标签相同的系列对象
【发布时间】:2019-07-30 16:20:27
【问题描述】:

我有一个数据集(称为“数据”),其中包含书籍列表以及用户在个人级别上对它们的评分(列 = 用户 ID、isbn、书名、书名)。

我想为一本书创建一般(汇总)评分和评分数量的新功能。然后我想修剪数据集以仅包含具有一定数量的评级的书籍。

我为评分数做的:

rating_count = data.groupby('Book-Title')['Book-Rating'].count().to_frame()
rating_count.rename(columns={'Book-Rating':'Rating-Count'}, inplace=True)
data = data.merge(rating_count, on='Book-Title', how='inner')
m = rating_count.quantile(.9) # trim threshols number
q_books = data.copy().loc[data['Rating-Count'] >= m] # new subsample

...最后一行引发

ValueError: 只能比较标签相同的 Series 对象

我们将不胜感激。谢谢。

【问题讨论】:

    标签: python pandas numpy


    【解决方案1】:

    我随机生成了一个类似结构的数据框并运行您的代码。

    可能引发错误的是代码的最后一行,特别是... >= m]

    m 不给你整数或浮点数;它有一个系列类型。例如,在我的情况下,m 是:

    Rating-Count    3.0
    Name: 0.9, dtype: float64
    

    m[0] 给了我3.0,因此代码按预期工作。


    # fix the last line of your code
    q_books = data.copy().loc[data['Rating-Count'] >= m[0]]
    

    【讨论】:

    • 你知道为什么它不为m返回数字类型吗?
    • @StanislavJirák 根据pandas.DataFrame.quantile 文档,它返回DataFrameSeries,而不是原始值本身。所以如果我理解正确的话,这基本上就是.quantile 的工作原理。
    猜你喜欢
    • 2018-01-25
    • 2020-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多