2016-09-21 3 views
-1

저는 python과 pandas 라이브러리를 사용합니다. 하나의 기준에 따라 데이터 프레임에서 행과 열을 수집하고 특정 BikeID 열의 'BIKE- \ d \ d \ d \ d'와 같은 패턴으로 해당 ID 만 수집하려고합니다.id 매칭을 기반으로 행과 열을 수집합니다.

D1 = pandas.dataframe

d2 = d1[d1["BikeID"] == re.compile(r' (BIKE-\d\d\d\d)')] 

하지만 대신 빈 데이터 프레임을 얻고있다 : 나는 다음의 여러 버전을 시도했다. 그것은 특정 일 때 작동합니다 :

d2 = d1[d1["BikeID"] == 'BIKE-0001'] 

,하지만 이지만, 앞에있는 BIKE가있는 모든 ID와 일치 시키려고합니다. 이 작업을 수행하는 방법을 보여 주시면 감사하겠습니다.

+2

니켈 수소, 귀하의 질문에, 읽기 :(아주 열심히하십시오이다 이 페이지를 확인하고 적절하게 형식을 지정하십시오 : http://stackoverflow.com/help/how-to-ask –

답변

0

당신은이 BIKE-로 시작하는 문자열을 찾을 것이다 다음 4 자리 정규식 패턴 '(^BIKE-[\d]{4})' 이것을 달성하기 위해 str.extract를 사용할 수 있습니다

In [167]: 
s= pd.Series(['BIKE-0001', 'BIKE','BIKE-000','sdBIKE-0001']) 
s 

Out[167]: 
0  BIKE-0001 
1   BIKE 
2  BIKE-000 
3 sdBIKE-0001 
dtype: object 

In [168]: 
s.str.extract(r'(^BIKE-[\d]{4})', expand=False) 

Out[168]: 
0 BIKE-0001 
1   NaN 
2   NaN 
3   NaN 
dtype: object 
+0

원시 데이터, 질문을 편집하여 원하는 출력을 생성하는 코드를 작성하십시오. – EdChum

+0

고맙습니다. 앞에서 말했듯이, d2 = d1 [d1 [ "BikeID"] == 'BIKE-0001'] BikeID = BIKE-0001 인 제품의 행과 모든 열을 d2 데이터 프레임에 저장합니다. 자전거 0001에서 자전거 -0400. BikeID가 BIKE로 시작하는 모든 제품의 행과 모든 열을 데이터 rame (d2)에 수집하려고합니다. str을 사용하기 위해 뭔가를 가져와야합니까? – sebastian44

+0

그 경우에는's.str.extract (r '(^ BIKE)', expand = False)'패턴이 작동해야합니다. – EdChum

관련 문제