나는 이것을 좀 더 pythonic하게하려고합니다.더 쓸쓸한 방법이 있나요?
user_df[-1:]['status_id'].values[0] in {3,5}
나는 수동으로 user_id.ix[-1:, 'status_id'].isin([3,5])
을 시도했지만 작동하지 않았습니다.
제안 사항? 최상위 버전이 작동하지만 약간 이상하게 보입니다.
나는 이것을 좀 더 pythonic하게하려고합니다.더 쓸쓸한 방법이 있나요?
user_df[-1:]['status_id'].values[0] in {3,5}
나는 수동으로 user_id.ix[-1:, 'status_id'].isin([3,5])
을 시도했지만 작동하지 않았습니다.
제안 사항? 최상위 버전이 작동하지만 약간 이상하게 보입니다.
당신이 시도 할 수 :
user_id['status_id'].iloc[-1:].isin([3,5])
샘플 :
user_id = pd.DataFrame({'status_id':[1,2,3]})
print (user_id)
status_id
0 1
1 2
2 3
#iloc without : [-1] return scalar
print (user_id['status_id'].iloc[-1] in set({3,5}))
True
#iloc with : [-1:] return vector - Series
print (user_id['status_id'].iloc[-1:].isin([3,5]))
2 True
Name: status_id, dtype: bool
isin
이 소폭 빠른 수 있습니다 (당신이 더 속도를 확인해야 더 값까지 당신은 알 것입니다 ...하지만도 큰 세트가 큰 차이가 없을 것입니다 ... (나는이 예제에서 더 빠를 것입니다 ... 아마도 조금 더 느릴 것입니다 ...) 그러나 val in set()
은 꽤 평범한 pythonic입니다. pd.isin
)
당신이 pandas.isin
또는를 사용하여 set
...에 대해 단일 값을 테스트 numpy.in1d
당신은 C로 이동하려면 상당한 시간 오버 헤드를 incure하고 다시 파이썬으로 단지 in
를 사용하여 대와 세트 느릅 나무는 O(1)
입니다 look up ... (두 경우 모두 타임 슬라이스가 인간 시간 스케일에 존재하지 않는다.)
아주 좋은 대답. 특히 그가 정말로 팬더를 'isin'이라고 쓰고 싶다면 (질문에 나온대로) –
예, 좋은 대답입니다. 나는 일관성을 유지하기 위해'user_id [ 'status_id'] .iloc [-1] .isin ([3,5])'를 선택했다. 고맙습니다! –
@FranciscoCervera - 감사합니다! – jezrael