Python似乎正在从我的数据中删除行
如果我这样做Python似乎正在从我的数据中删除行,python,pandas,Python,Pandas,如果我这样做 rr = pd.read_csv( 'refinedRatings.csv' ) lookrr = rr.loc[rr['user_id'] == 1] lookrr.head(30) 我的数据看起来像这样 Unnamed:0 user_id book_id rating 0 0 1 258 5 59 78 1 1796 5 148900 230483 1
rr = pd.read_csv( 'refinedRatings.csv' )
lookrr = rr.loc[rr['user_id'] == 1]
lookrr.head(30)
我的数据看起来像这样
Unnamed:0 user_id book_id rating
0 0 1 258 5
59 78 1 1796 5
148900 230483 1 4691 4
148901 230485 1 2063 4
148902 230489 1 11 5
148903 230490 1 1644 5
148904 230492 1 136 5
148905 230493 1 6665 4
148906 230495 1 35 5
148907 230496 1 33 4
148908 230500 1 10 4
148909 230502 1 4 5
148910 230505 1 1521 5
148911 230506 1 70 5
148912 230509 1 36 4
148913 230512 1 32 4
148914 230513 1 13 4
148915 230514 1 66 4
rr = pd.read_csv( 'refinedRatings.csv' )
rrgb= rr.groupby('user_id')
rrgb.head(200)
Unnamed: 0 user_id book_id rating
0 0 1 258 5
1 1 2 4081 4
2 2 2 260 5
3 3 2 9296 5
4 5 2 26 4
5 7 2 33 4
6 8 2 301 5
7 9 2 2686 5
8 10 2 3753 5
9 11 2 8519 5
10 12 4 70 4
11 14 4 388 4
12 15 4 18 5
13 16 4 27 5
14 17 4 21 5
15 18 4 2 5
16 19 4 23 5
17 20 4 24 5
由于stackoverflow格式的原因,它不是很清晰,所以这里有一个图像
但是如果我像这样使用group by
Unnamed:0 user_id book_id rating
0 0 1 258 5
59 78 1 1796 5
148900 230483 1 4691 4
148901 230485 1 2063 4
148902 230489 1 11 5
148903 230490 1 1644 5
148904 230492 1 136 5
148905 230493 1 6665 4
148906 230495 1 35 5
148907 230496 1 33 4
148908 230500 1 10 4
148909 230502 1 4 5
148910 230505 1 1521 5
148911 230506 1 70 5
148912 230509 1 36 4
148913 230512 1 32 4
148914 230513 1 13 4
148915 230514 1 66 4
rr = pd.read_csv( 'refinedRatings.csv' )
rrgb= rr.groupby('user_id')
rrgb.head(200)
Unnamed: 0 user_id book_id rating
0 0 1 258 5
1 1 2 4081 4
2 2 2 260 5
3 3 2 9296 5
4 5 2 26 4
5 7 2 33 4
6 8 2 301 5
7 9 2 2686 5
8 10 2 3753 5
9 11 2 8519 5
10 12 4 70 4
11 14 4 388 4
12 15 4 18 5
13 16 4 27 5
14 17 4 21 5
15 18 4 2 5
16 19 4 23 5
17 20 4 24 5
然后数据看起来像这样
Unnamed:0 user_id book_id rating
0 0 1 258 5
59 78 1 1796 5
148900 230483 1 4691 4
148901 230485 1 2063 4
148902 230489 1 11 5
148903 230490 1 1644 5
148904 230492 1 136 5
148905 230493 1 6665 4
148906 230495 1 35 5
148907 230496 1 33 4
148908 230500 1 10 4
148909 230502 1 4 5
148910 230505 1 1521 5
148911 230506 1 70 5
148912 230509 1 36 4
148913 230512 1 32 4
148914 230513 1 13 4
148915 230514 1 66 4
rr = pd.read_csv( 'refinedRatings.csv' )
rrgb= rr.groupby('user_id')
rrgb.head(200)
Unnamed: 0 user_id book_id rating
0 0 1 258 5
1 1 2 4081 4
2 2 2 260 5
3 3 2 9296 5
4 5 2 26 4
5 7 2 33 4
6 8 2 301 5
7 9 2 2686 5
8 10 2 3753 5
9 11 2 8519 5
10 12 4 70 4
11 14 4 388 4
12 15 4 18 5
13 16 4 27 5
14 17 4 21 5
15 18 4 2 5
16 19 4 23 5
17 20 4 24 5
再说一次,图像
因此,group by操作似乎正在删除“user_id”等于1的几行
对此有什么解释吗
这是数据的直接链接
也适用于原始数据源
编辑:
我还将索引设置为user\u id
,结果与使用groupby
代码
结果
Unnamed: 0 book_id rating
user_id
1 0 258 5
2 1 4081 4
2 2 260 5
2 3 9296 5
2 5 26 4
2 7 33 4
2 8 301 5
2 9 2686 5
2 10 3753 5
2 11 8519 5
4 12 70 4
4 14 388 4
4 15 18 5
4 16 27 5
4 17 21 5
4 18 2 5
4 19 23 5
4 20 24 5
同样,结果的图片
编辑:
作为预防措施,我将所有条目转换为str,然后再转换回int
rr = rr.applymap(str)
rr = rr.applymap(int)
这没有什么不同。上述代码的所有结果都是相同的。然而,有趣的是,在应用了数据类型更改之后,如果我查找所有带有字符串的条目,它会给我与以前一样的“groupby”相同的数据
rr[rr['user_id'].apply(lambda x: type(x)==str)]
rr.head(200)
结果
Unnamed: 0 user_id book_id rating
0 0 1 258 5
1 1 2 4081 4
2 2 2 260 5
3 3 2 9296 5
4 5 2 26 4
5 7 2 33 4
6 8 2 301 5
7 9 2 2686 5
8 10 2 3753 5
9 11 2 8519 5
同样,结果的图片@SantoshGupta7:我向您保证,您的数据不会被删除。之所以如此,是因为函数保留了数据帧的原始顺序。如果在groupby对象上调用.count()或任何其他聚合函数,您将看到所有数据仍然存在 要近似预期的.head()行为,可以执行以下操作:
rr = pd.read_csv('refinedRatings.csv')
rrgb = rr.groupby('user_id')
print(rrgb.apply(lambda x: x.head(200)))
Unnamed: 0 user_id book_id rating
user_id
1 0 0 1 258 5
59 78 1 1796 5
148900 230483 1 4691 4
148901 230485 1 2063 4
148902 230489 1 11 5
148903 230490 1 1644 5
148904 230492 1 136 5
148905 230493 1 6665 4
148906 230495 1 35 5
148907 230496 1 33 4
148908 230500 1 10 4
148909 230502 1 4 5
148910 230505 1 1521 5
148911 230506 1 70 5
148912 230509 1 36 4
148913 230512 1 32 4
您会注意到“user\u id”列仍然存在。这取决于groupby.head函数的特殊性质和/或您尚未对数据执行任何聚合的事实
有关“头部”问题的讨论,请参阅。是巧克力文本编辑器还是您喜欢漫画版P但对于real,您确定每列中的值都是相同的数据类型吗?这是一个常见的罪魁祸首,一些字符串与数字混合在一起。lol字体是lexie可读的,可以修改。但实际上我不知道。我从github数据集中得到的,我会调查的。谢谢你的提示!好的,我刚刚使用了df.dtypes,它说所有的列都是int64。有人知道它是否有可能忽略第二种数据类型吗?df.info()给出了相同的信息,这似乎不是问题所在。如果数据在GITHUB上,考虑链接到它(如果是公共的),因为它会使它更容易帮助。用原始数据更新打开的帖子,这里和我使用的与我的GDRILE文件直接链接的精炼数据。