100000 행을 포함하는 데이터 프레임 (ratings_base
)이 있습니다. 나는 그것으로부터 하나의 행을 필터링하고 그것을 위해 다음 코드 세그먼트를 사용했다. 나에게 Series
객체를 반환팬더 데이터 프레임에서 필터링 후 행 삭제
((ratings_base.loc[ratings_base['user_id'] == 1]).sort_values(by='rating', ascending=0)).iloc[0]
.
user_id 1
movie_id 170
rating 5
Name: 19996, dtype: int64
원본 데이터 프레임 개체에서이 행 (시리즈 개체)을 삭제하려면 어떻게해야합니까? 데이터 프레임의 드롭 함수를 사용할 수 있지만 행 인덱스가 필요합니다. 선택한 행의 행 인덱스를 가져올 수 있으면 (Series 객체의 Name 속성으로 나타남) 드롭 할 수 있습니다.
대안을 선호하고 나에게도 효과적입니다. 옆 질문 있으십시오. 나는 그것을 떨어 뜨리기 위해 "inplace = True"속성을 사용해야했습니다. len (rating_base)을 검사하여 삭제되었는지 확인했습니다. "inplace = True"속성이 없으면 길이는 100000이고 그 소품은 99999입니다. 이유가 무엇입니까? – Malintha
'df.drop (..., inplace = True) '를 호출하면'drop'은'df'를 수정하고'None'을 반환합니다. 'df.drop (...)'를 호출하면'df'는 변경되지 않고'drop'은 새로운 DataFrame을 리턴합니다. 따라서'df'의 값을 변경하려면 할당을 사용해야합니다 :'df = df.drop (...)'. 필자는'inplace'라는 이름이 오해의 소지가 있기 때문에'inplace = True'를 피하면서 후자를 선호합니다. 임시 메모리를 저장하지 않는다는 의미에서 진정한 내부 연산이 아닙니다. 'inplace'를 피하기위한 다른 이유는 http://stackoverflow.com/a/22533110/190597을 참고하십시오. – unutbu