반응형
Python Pandas에서 두 값 사이의 DataFrame에서 행을 선택하는 방법은 무엇입니까?
df
열의 값 closing_price
이 99에서 101 사이 인 행만 포함 하도록 DataFrame을 수정하고 아래 코드로이를 수행합니다.
그러나 오류가 발생합니다.
ValueError : 시리즈의 진실 값이 모호합니다. a.empty, a.bool (), a.item (), a.any () 또는 a.all () 사용
루프를 사용하지 않고 이렇게 할 수있는 방법이 있는지 궁금합니다.
df = df[(99 <= df['closing_price'] <= 101)]
()
모호성을 제거하는 비용을 사용 하여 부울 벡터를 그룹화 해야합니다 .
df = df[(df['closing_price'] >= 99) & (df['closing_price'] <= 101)]
다음 사이 의 시리즈 도 고려하십시오 .
df = df[df['closing_price'].between(99, 101)]
더 좋은 대안이 있습니다 .-query () 메소드를 사용하십시오.
In [58]: df = pd.DataFrame({'closing_price': np.random.randint(95, 105, 10)})
In [59]: df
Out[59]:
closing_price
0 104
1 99
2 98
3 95
4 103
5 101
6 101
7 99
8 95
9 96
In [60]: df.query('99 <= closing_price <= 101')
Out[60]:
closing_price
1 99
5 101
6 101
7 99
업데이트 : 댓글에 응답 :
나는 여기의 구문을 좋아하지만 표현한다.
df.query('(mean + 2 *sd) <= closing_price <=(mean + 2 *sd)')
In [161]: qry = "(closing_price.mean() - 2*closing_price.std())" +\
...: " <= closing_price <= " + \
...: "(closing_price.mean() + 2*closing_price.std())"
...:
In [162]: df.query(qry)
Out[162]:
closing_price
0 97
1 101
2 97
3 95
4 100
5 99
6 100
7 101
8 99
9 95
newdf = df.query('closing_price.mean() <= closing_price <= closing_price.std()')
또는
mean = closing_price.mean()
std = closing_price.std()
newdf = df.query('@mean <= closing_price <= @std')
당신은 또한 .between()
방법 을 사용할 수 있습니다
emp = pd.read_csv("C:\\py\\programs\\pandas_2\\pandas\\employees.csv")
emp[emp["Salary"].between(60000, 61000)]
산출
이 대신
df = df[(99 <= df['closing_price'] <= 101)]
이것을 사용해야합니다
df = df[(df['closing_price']>=99 ) & (df['closing_price']<=101)]
쿼리를 합성하려면 NumPy의 비트 논리 연산자 |, &, ~, ^를 사용해야합니다. 또한 괄호는 연산자 우선 순위에 중요합니다.
자세한 내용은 비교, 마스크 및 부울 논리 링크를 방문하십시오.
여러 값과 여러 입력을 처리하는 경우 이와 같은 적용 기능을 설정할 수도 있습니다. 이 경우 특정 범위에 속하는 GPS 위치에 대한 데이터 프레임을 필터링합니다.
def filter_values(lat,lon):
if abs(lat - 33.77) < .01 and abs(lon - -118.16) < .01:
return True
elif abs(lat - 37.79) < .01 and abs(lon - -122.39) < .01:
return True
else:
return False
df = df[df.apply(lambda x: filter_values(x['lat'],x['lon']),axis=1)]
반응형
'ProgramingTip' 카테고리의 다른 글
모델 변경시 AngularJS 뷰가 업데이트되지 않음 (0) | 2020.10.28 |
---|---|
왜 빈 사전이 컴파일러에서 위험한입니까? (0) | 2020.10.28 |
Typescript를 사용하여 Express Request 객체 확장 (0) | 2020.10.28 |
jQuery가 다른 Javascript 프레임 워크에 비해 채택되는 이유는 무엇입니까? (0) | 2020.10.28 |
바이트 배열을 맵 키로 사용 (0) | 2020.10.28 |