pandas df列中的数字,但该列的列表版本中没有

exdqitrt  于 2023-09-29  发布在  其他
关注(0)|答案(2)|浏览(94)

我有以下代码:

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

该Assert正在触发AssertionError。这怎么可能呢?为什么列中有一个0,但当我将列转换为列表时,0消失了?
我正在加载的dataframe基于MovieLens-1 M,看起来像:

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。)
(Also,我已经检查了CTRL-F:评级栏中没有0评级。)

bqucvtff

bqucvtff1#

0 in df[RATING_COL]index中搜索,要在Series中搜索values用途:

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

w6lpcovy2#

  • 怎么会有一个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的键之一。

相关问题