shift
및 all
의 조합을 사용하여 여기서
In [98]:
import io
temp = """Date,Value
01/02/2014,.1
01/03/2014,.1
01/04/2014,.5
01/05/2014,.5
01/06/2014,.5
01/07/2014,.1"""
df = pd.read_csv(io.StringIO(temp))
df
Out[98]:
Date Value
0 01/02/2014 0.1
1 01/03/2014 0.1
2 01/04/2014 0.5
3 01/05/2014 0.5
4 01/06/2014 0.5
5 01/07/2014 0.1
In [99]:
df.loc[(df.shift() != df).all(axis=1)]
Out[99]:
Date Value
0 01/02/2014 0.1
2 01/04/2014 0.5
5 01/07/2014 0.1
우리가 원래 dataframe와 시프트 (1 행에 의해) dataframe 비교를, 우리는 각 컬럼과 비교하고 all
을 사용하여 달성 axis=1
를 전달할 이.
또한 고장, 우리는 무엇을 df.shift() != df
돌아 보면 : 우리는 모든 행이 있는지 확인하려면 우리는 부울 값으로 dataframe를 얻을 수 있지만, 우리는 그대로 마스크로 사용할 수 없습니다
In [100]:
df.shift() != df
Out[100]:
Date Value
0 True True
1 True False
2 True True
3 True False
4 True False
5 True True
True
그래서 우리는 all
사용
In [101]:
(df.shift() != df).all()
Out[101]:
Date True
Value False
dtype: bool
그러나 기본적으로는 열이 우리가 axis=1
을 통과하도록 행 값을 확인하려면, 모든 True
을 것을 확인 :
,
In [102]:
(df.shift() != df).all(axis=1)
Out[102]:
0 True
1 False
2 True
3 False
4 False
5 True
dtype: bool
우리는 지금 우리가 원하는 것을 달성하기 위해 우리 부울 마스크로 사용할 수 있습니다 우리가 (어딘가에 아마 주요 문서) 요리 책이 추가하지만
In [103]:
df.loc[(df.shift() != df).all(axis=1)]
Out[103]:
Date Value
0 01/02/2014 0.1
2 01/04/2014 0.5
5 01/07/2014 0.1
흠 .... 그걸하고 싶니? 이 – Jeff
의 완벽한 예 @Jeff는이 답변에 대한 링크일까요? – EdChum
작은 완전한 예제가 좋을 것이라고 생각합니다. (예를 들어 인라인 코드가 작은 경우 더 낫습니다) – Jeff