我有数据帧(ratings_base
),其中包含100000行。我正在过滤它的一行,我使用了以下代码段。
((ratings_base.loc[ratings_base['user_id'] == 1]).sort_values(by='rating', ascending=0)).iloc[0]
返回Series
个对象。
user_id 1
movie_id 170
rating 5
Name: 19996, dtype: int64
如何从原始数据框对象中删除此行(Series对象)?我可以使用数据帧的drop函数,但我需要行索引。如果我可以获得所选行的行索引(我可以看到它显示为Series对象的Name属性),我可以删除它。
答案 0 :(得分:1)
df.loc[0]
选择第一行。
df.loc[1:]
选择第一行之后的所有内容。
所以你可以使用
ratings_base = ((ratings_base.loc[ratings_base['user_id'] == 1])
.sort_values(by='rating', ascending=0))
ratings_base = ratings_base.iloc[1:]
或者,您可以使用df.drop
:
row = ((ratings_base.loc[ratings_base['user_id'] == 1])
.sort_values(by='rating', ascending=0)).iloc[0]
label = row.name
ratings_base = ratings_base.drop(label)
如果您希望删除不是第一行的行,这可能会更灵活。
请注意,ratings_base.drop
会删除索引为label
的所有行。因此,如果索引不是唯一的,则可以删除多行。