2017-02-23 2 views
1

파이썬 2.7.11 // 팬더 0.18.1조작하기 Dataframes

나는 250 개 항목에 가상의 주류 판매점을 위해 함께 연습 할 만들어 데이터 세트 (CSV)가 있습니다. 칼럼에는 '양조장', '라벨', '연도', '상점 가격', 'MSRP', '공급 업체 가격'및 기타 몇 가지 항목이 포함됩니다. 그러나이 질문의 경우 해당 조각은 양조장 및 상점 가격 (계산대에서 쿼리 한 현재 가격)입니다.

df = pd.read_csv('liquorStore.csv')  
df.Brewery.str.contains('Glenfiddich') 

내가 글렌피딕 제품을 찾는 방법을 알고 있지만 나는 변경하는 방법을 모른다 : 나는 글렌피딕에 판매를 실행중인 경우

  Brewery Store Price 
104 Glenfiddich  109.99 
105 Glenfiddich  89.99 
108 Glenfiddich  114.99 
110 Glenfiddich  99.99 
119 Glenfiddich  169.99 

,이 같은 것을 함께 글렌피딕 항목을 찾을 수 있습니다 데이터 프레임 내의 행의 값.

  1. 찾기 '글렌피딕'항목
  2. 판매/새로운 가격을 반영하기 위해 '스토어 가격'조정 (해제 예를 들어 10 %)

주 : 예를 들어, 내가 원하는 나는 단지입니다 pandas으로 연습 할 수 있습니다.

답변

2

당신은 0.9에 의해 다음 선택에 대한 boolean indexing 여러으로 loc를 사용할 수 있습니다 샘플

df.loc[df.Brewery == 'Glenfiddich', 'Store Price'] *= .9 

: 또 다른 가능한 해결책은 mask를 사용
print (df) 
     Brewery Store Price 
104 Glenfiddich  109.99 
105 Glenfiddich  89.99 
120  Another  100.00 

df.loc[df.Brewery == 'Glenfiddich', 'Store Price'] *= .9 
print (df) 
     Brewery Store Price 
104 Glenfiddich  98.991 
105 Glenfiddich  80.991 
120  Another  100.000 

입니다

:

df['Store Price'] = df['Store Price'].mask(df.Brewery == 'Glenfiddich', 
              df['Store Price'] * .9) 
print (df) 
     Brewery Store Price 
104 Glenfiddich  98.991 
105 Glenfiddich  80.991 
120  Another  100.000 
+1

을 예, 그것은을 또 다른 해결책이지만, [여기] (http://tomaugspurger.github.io/modern-1.html)'거친 규칙은 연속적인 대괄호를 볼 때마다 발생합니다.] [당신은 문제를 요구하고 있습니다.] 그것을 .loc [..., ...]으로 바꾸면 설정됩니다 .' – jezrael