2016-09-21 114 views
-1

我使用python和熊貓庫。我想根據一個標準從數據框中收集行和列,僅收集具有來自特定列「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

MH,你的問題是非常難以閱讀:(請檢查此頁面並相應地設置您的問題格式:http://stackoverflow.com/help/how-to-ask –

回答

0

您可以使用str.extract與正則表達式模式'(^BIKE-[\d]{4})'實現這一目標,這將查找以BIKE-開頭的字符串,然後4個位數:

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

請發佈原始數據,通過編輯您的問題來創建您的df和所需輸出的代碼 – EdChum

+0

謝謝您的回答。正如我所說,以下內容:d2 = d1 [d1 [「BikeID」] =='BIKE-0001']將在d2數據幀中存儲BikeID = BIKE-0001的行和所有列。 Bike-0001自行車-0400。我想收集數據rame(d2)BikeID以BIKE開頭的所有產品的行和所有列。我需要導入一些東西來使用str嗎? – sebastian44

+0

在這種情況下,模式's.str.extract(r'(^ BIKE)'expand = False)'應該可以工作 – EdChum