df 列中的数字,但不在该列的列表版本中

问题描述 投票:0回答:1

我有以下代码:

    if 0 in df[RATING_COL]:
        rating_col_list = df[RATING_COL].to_list()
        assert 0 in rating_col_list

断言正在触发

AssertionError
。这怎么可能? 怎么可能列中有一个 0,但是当我将列转换为列表时,0 就消失了?

我正在加载的数据框基于 MovieLens-1M,看起来像:

user_id,item_id,rating
1,1193000,2
1,1193001,3
1,1193002,4
1,1193003,5
1,1193004,6
1,1193005,7
1,1193006,8
1,1193007,9
1,1193008,10
1,661000,6
1,661001,7
1,661002,8
1,661003,9
1,661004,10
1,661005,9
1,661006,8
1,661007,7
1,661008,6

在此格式中,

1,1193008,10
表示用户 1 对项目 1193 的评分为 8。10 表示这是评分,所有其他以 1193 开头的项目的评分将低于 10。(因此
1,661004,10
表示用户 1 对项目 661 进行了评分 4。)

(另外,我已经用CTRL-F检查过:评级栏中没有0评级。)

python pandas assert
1个回答
0
投票

因为

0
是系列
df[RATING_COL]
的索引。

RATING_COL = "rating"
print(df[RATING_COL]

    0      2 # <-- index 0
    1      3
    2      4
    3      5
    4      6
    5      7
    6      8
    7      9
    8     10
    9      6
    10     7
    11     8
    12     9
    13    10
    14     9
    15     8
    16     7
    17     6
    Name: rating, dtype: int64

就像检查某个键是否在字典中一样,

O in d
将检查
0
是否是
d
的键之一。

© www.soinside.com 2019 - 2024. All rights reserved.